More Related Content
More from Tsunenori Oohara
More from Tsunenori Oohara (20)
Elixirと他言語の比較的紹介ver.2
- 9. 自己紹介
• おーはら(@ohrdev)
• 好きなBehaviours:GenEvent
• FF14(光の戦士: Lv60白魔)
– 中2っぽい名前のライブラリがElixirには多い
• 普段やってる事
– 寺社仏閣巡り/写経/仏像彫り/丸太収集
– RedBull / ダイエット
• その他
– 株式会社ドリコム 技術基盤部
– 広告システムの開発/メンテ/etc
• Elixir/Phoenix, Erlang/OTP, Lisp, Ruby/Rails
• プロダクションで実際にElixirを使ってます(1年程)
- 15. Elixirの良い/悪い点
• 悪い点
– Erlangの悪い所全部
– ドラスティックに言語仕様が変わる
• 開発スピード/言語仕様更新が早い
• 開発スピード/言語仕様更新がとても早い
– Erlang知らないとdebug辛い(中身はErlang)
– ErlangVMはそんなに速く無い
– Erlangのバージョン縛りがわりと強い
– エコシステムがまだ十分に成熟してない
– 静的型付けではない
- 17. Elixirの仕組み
• コンパイラはErlang実装
– Leex(Lexical analyzer generator for Erlang)
• 現在は使われていない(elixir_tokenizerモジュールを
JoseValimがElixir用に作成)
– Yecc(LALR-1 Parser Generator for Erlang)
• カーネルはElixir実装
• 周辺ツール
– eex/ex_unit/iex/logger/mix
• サブ/関連プロジェクト
– plug/ecto/hexpm
- 22. 他言語比較
• Elixir vs Scala vs Ruby
– エコシステム,コミュニティ規模,ユーザー数
• Ruby > Scala > Elixir
– 採用事例/仕事
• Ruby >> Scala >>> Elixir
– 主要WAF
• Elixir: Phoenix
• Ruby: Rails
• Scala: Play
- 23. Elixir vs Ruby
• 関数型 vs 手続き型/OOP
– Elixir: 関数型、メタプログラミング、マクロ
– Ruby: 手続き型、OOP、メタプログラミング
• ElixirコミュニティにはRubyクラスタの人達が
多い
- 24. Elixir vs Scala
• アクターモデルのアーキテクチャ
– Elixir:言語(ErlangVM)レベルで実装
– Scala:ライブラリ(Akka)レベルで実装
– 自由度:Elixir < Scala
• ex) メールボックスの処理アルゴリズム(自前実装も可
能)
– 処理性能:Elixir > Scala ※そこまで気にならない?
• ElixirはGCによるStopTheWorldがない
• 同時処理数/プロセス起動時間/プロセスマイグレー
ション性能/プロセスの使用メモリ/スケーリング/etc
- 31. おまけ
• トラッキングしておくと良いかもしれない言語
– Pony
• http://www.ponylang.org/
• http://www.slideshare.net/matsu_chara/pony-
concurrency-built-into-the-type-system-59778750
• OOP
• アクターモデル
• HighPerformance
• ErlangのOTP相当のものもある
• Post Erlang?