@sdogruyol
kodla.co
01.05.2016
Serdar Doğruyol
Lead Developer - Protel
@sdogruyol
Ruby kadar kolay, C kadar hızlı, verimlilik ve sadelik üzerine odaklanmış, açık kaynak kodlu derlenen bir programlama dilidir.
Dünyanın en güzel programlama dili :)
“İnsanlar, özellikle bilgisayar mühendisleri, makineler üzerine yoğunlaşıyor. Makineler üzerine yoğunlaşıyorlar ama aslında biz insanlara ve onların nasıl programlama yaptığına odaklanmalıyız. Çünkü insanlar efendi ve makineler onların köleleridir.”
Yukihiro Matsumoto - Matz
Java
class OlusturmakIstemedigimAmaJavaninZorlaOlusturttuguSinif {
public static void main() {
System.out.println("Hello World");
}
}
Crystal
puts "Hello World"
Hadi 1,2,3,4,5,6 sayılarından çift olanları filtreleyip yeni bir liste oluşturalım.
Java
public static int[] filterEven(int[] array) {
int[] aggregator = new int[array.length];
int aggregatorSize = 0;
for (int i : array) {
if (i % 2 == 0) {
aggregator[aggregatorSize] = i;
aggregatorSize += 1;
}
}
return aggregator;
}
int[] array = { 1, 2, 3, 4, 5, 6 };
filterEven(array); // => { 2, 4, 6, 0, 0, 0 }
Hadi 1,2,3,4,5,6 sayılarından çift olanları filtreleyip yeni bir liste oluşturalım.
Crystal
array = [1, 2, 3, 4, 5, 6]
array.select &.even? # => [2, 4, 6]
2.days.ago
# 2016-02-23 22:10:05 +0200
Dil | CPU(%) | Kaynak(MB) |
---|---|---|
Crystal (Kemal) | 1.85 | 11.2 |
Node.js (ws) | 38.95 | 906.3 |
WebSocket
30x az CPU zamanı
80x az Memory
https://gist.github.com/sdogruyol/bdd400a6eac13e26228e
Dil | Zaman(sn) | Kaynak(MB) |
---|---|---|
Crystal | 0.59 | 3.3 |
Go | 1.43 | 2.3 |
Erlang | 1.89 | 17.1 |
Scala | 6.42 | 1.5 |
Ruby | 41.73 | 30.0 |
Threadring
https://github.com/kostya/crystal-benchmarks-game
Dil | Zaman(sn) | Kaynak(MB) |
---|---|---|
C | 1.59 | 0.4 |
Crystal | 1.74 | 1.3 |
Ruby | 91.01 | 7.3 |
NBody
https://github.com/kostya/crystal-benchmarks-game
Kendisiyle kendini yazmak???
RubyGems
http://kemalcr.com
require "kemal"
get "/" do
"Merhaba Kodla!"
end
Kemal.run
Kendi başına çalışabilen dahili web sunucusu
require "kemal"
ws "/socket" do |socket|
socket.send "Hello from Kemal!"
end
Kemal.run
Dahili WebSocket desteği
Framework | Requests Per Sec | Avg. Resp. Time |
---|---|---|
Kemal (Production) | 100238 | 395.44μs |
Sinatra (Puma) | 2274 | 43.82ms |
Mükemmel Performans
Matz is nice so we are nice
http://www.crystalforrubyists.com
http://crystal-lang.org/docs/
@sdogruyol
https://slides.com/sdogruyol/crystal-ve-kemal