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

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

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

842aaadff6e13fbf372c9b17b49b031c?s=128

Pine Mizune

August 12, 2015
Tweet

More Decks by Pine Mizune

Other Decks in Programming

Transcript

  1. Crystal Ruby 風シンタックスな静的言語の紹介 Mobile Factory, Inc @pine613

  2. 自己紹介とか 2 たぶん新卒 MF で Perl & Swift 書いてる 好きな言語は

    JS & C#
  3. 目次 • Crystal とは ? • Crystal の 5 つのコンセプト

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

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

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

    言語との容易なバインディング 4. コンパイル時評価によるコード生成 5. 高速なネイティブコード出力
  7. 1. Ruby 風シンタックス 7 Ruby-inspired syntax.

  8. 8 Crystal のシンタックスは Ruby とほぼ 等しい

  9. 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 完全に一致
  10. Crystal syntax ≒ Ruby syntax 10 • ほとんど同じだって Matz も言ってる!!

    出展: https://twitter.com/yukihiro_matz/status/610842781091672064
  11. 2. 型推論による静的型付け 11 Statically type-checked but without having to specify

    the type of variables or method arguments.
  12. 12 Crystal は静的型付け、だけど 変数・メソッドに 明示的に型は不要

  13. 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 明示的に書いても良い 型を明示的に書かなくて良い
  14. 5. 高速なネイティブコード出力 14 Compile to efficient native code.

  15. 15 Crystal は C 言語と 同等速度 の ネイティブコードを出力

  16. 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 秒
  17. 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
  18. Crystal の使い所 18 • 速度が求められる場所 – API 層、コア部分 • 既存

    Ruby プロジェクトの段階的移植 • Ruby エンジニアが多い環境での新規採用 ※ 安定して動作するという条件下で
  19. • セルフホスティングコンパイラ – ある仕様 FIX & 安定動作するフェーズ • 最新版: v0.7.5

    (2015/07/31) • 安定した開発 19 Crystal 開発進捗
  20. Fin.