Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Crystal - Ruby 風シンタックスな静的言語の紹介 - (MF x Gaiax 合...

Crystal - Ruby 風シンタックスな静的言語の紹介 - (MF x Gaiax 合同技術勉強会 Ver.)

Mobile Factory と Gaiax の合同技術勉強会で発表した資料です。

以下の資料の Short Ver. となってます。
https://speakerdeck.com/pine613/crystal-ruby-feng-sintatukusunajing-de-yan-yu-falseshao-jie-long-talk-ban

Pine Mizune

August 12, 2015
Tweet

More Decks by Pine Mizune

Other Decks in Programming

Transcript

  1. 目次 • Crystal とは ? • Crystal の 5 つのコンセプト

    • Crystal の使い所 • Crystal の開発進捗
  2. Crystal とは? 4 Ruby の 表現力 を C の 速度

    で実現する 静的型付け言語
  3. Crystal とは? 5 Ruby ◦ 高い表現力 ◦ 高い生産性 × 遅い

    C 言語 ◦ 非常に高速 × 表現力が乏しい × 生産性が低い Crystal 同時に実現
  4. Crystal のコンセプト 6 1. Ruby 風シンタックス 2. 型推論による静的型付け 3. C

    言語との容易なバインディング 4. コンパイル時評価によるコード生成 5. 高速なネイティブコード出力
  5. Ruby syntax 100.times do |x| if x % 15 ==

    0 puts ”fizzbuzz” elsif x % 3 == 0 puts ”fizz” elsif x % 5 == 0 puts “buzz” else puts x end end 9 Crystal syntax 100.times do |x| if x % 15 == 0 puts ”fizzbuzz” elsif x % 3 == 0 puts ”fizz” elsif x % 5 == 0 puts “buzz” else puts x end end 完全に一致
  6. Crystal syntax ≒ Ruby syntax 10 • ほとんど同じだって Matz も言ってる!!

    出展: https://twitter.com/yukihiro_matz/status/610842781091672064
  7. 13 Crystal syntax def add(a, b) return a + b

    end r = add(3, 5) puts r # => 8 Crystal syntax (型アノテーションあり) def add(a : Int, b : Int) : Int return a + b end r : Int = add(3, 5) puts r # => 8 明示的に書いても良い 型を明示的に書かなくて良い
  8. 16 Crystal の実行速度 (1/2) 0 100 200 300 400 500

    C/C++ Crystal Go Node Ruby Python JSON Brainfuck Matmul 出展: https://github.com/kostya/benchmarks 秒
  9. 17 Crystal の実行速度 (2/2) 0 2 4 6 8 10

    12 14 C/C++ Crystal Rust Go D Node JSON Brainfuck Matmul 秒 出展: https://github.com/kostya/benchmarks
  10. Crystal の使い所 18 • 速度が求められる場所 – API 層、コア部分 • 既存

    Ruby プロジェクトの段階的移植 • Ruby エンジニアが多い環境での新規採用 ※ 安定して動作するという条件下で