ゆき社長

シーゲンガーのお勉強 ゲームプログラマ、ゲーマー、色々!

Elixir

知り合いに ElixirをDisってくれと言われた(w

Elixirは ErlangVM上で動く、並列&非同期処理に優れる

パフォーマンスの良いWebサーバと聞いている

実際に使ってないが、仕組みをみるかぎり

コネクションに対し 軽量スレッドを作成し実行。例外出たら軽量スレッドごと落とす

軽量スレッドとはコルーチンとかファイバーとか言う奴で

普通のスレッドに比べ圧倒的にパフォーマンスが良い

言語はRubyに似た構文

つまり

node.jsはパフォーマンスに優れるがJavaScriptは言語的にサーバ開発、大人数開発には向かない

Erlangは言語構文が特殊で使い辛いので構文はRubyぽくした

Rubyは実行速度が遅いしマルチスレッドしか不可能だがErlangVMにすることで改善

エラーは軽量スレッドを落とすので堅牢である

まさにパーフェクト

その他、言語構造が関数型言語で、基本的に副作用が出来ないので

やはり 堅牢だ

この段階で比較対象にできるのは node、PHPRubyPython以外。

C++に比べるとパフォーマンスは悪いがC++にはまともなWebフレームワークが存在しない&学習コストが高いため

一般的には Webサーバとして比較対象にあがらない

Javaフレームワークによるが基本的に速い。コンパイル言語だし。

速度比較はわからないが node.jsと同等からそれ以上速い

Servletは爆速

大規模開発には向くが、開発効率としては軽量言語に劣る

Golang

nodeやPlayより速いという話。まだコンパイラの最適化が弱いので今後さらに速くなるだろう

開発効率はあまり情報ないが、Javaより高そう

Elixirのライバルにふさわしいのはこいつ

私の結論では、流行るかはわからないが

GolangとElixirの2つが webサービス開発言語として

頭ひとつ抜けていると思う

Elixirの弱点といわれると

まず セミコロン無し教で、ruby文法に慣れない人は ヤだなー

いちいちendうつのだるい

でもこれは 慣れるしかないとして

Erlangに使われる cowboyのパフォーマンスが気になるところ。

そこそこ軽量という話はあるが、圧倒的に使用が少ないので

不具合など nginxなどに比べて怖いところがある

Elixir作った人も Rubyのコミッターらしいし、Rubyの人が大漁に流れてくるのではないかな???