Erlang楽しい♪
最近Erlangを勉強中なのだけど,かなり良い感触.
メジャーじゃない言語(C/C++,Perl,Java,PHP,Rubyくらい?)は,興味を持っても,実際に業務で導入する,というところまでは行かないのだけど,Erlangは実際に使いたいと思うほど.
MLでErlangの話の資料が公開されていて,
Threads is evil.
Processes are ugly.
State machines send you mad.
ということで,Erlang良いよ,という内容.
多数のリクエストを扱うようなサーバアプリケーションを作る場合,スレッドは見つけにくいバグがよく起こる上にそこまでスケールしないし,マルチプロセスは遅い&スケールしない.
C10K問題と言われていて,解決する方法としては,ノンブロッキング呼び出しとか非同期呼び出しで自前で各コネクションの状態を管理してがんばるしかないわけだけど,これは実装がかなり大変.
確かにパフォーマンスは最大限出るけれど,作るのが大変なので,普通のWebサービスに使ったりとかは難しい.
その点,Erlangなら,複数プロセスで処理をする場合と同じようにコードを書くだけで,C10K問題をクリアできる.
実際に,Erlangで書かれたサーバ(yaws)とApacheの対決結果などを見ても,8万以上のコネクションでも問題なく動作.
マイナー言語の宿命か,ドキュメントが貧弱だったり,ライブラリがもう少しほしい感じはするけど,オンメモリDB,ディスクDB(耐障害性は無し),分散DBは標準で付いてくる.ついPerlのCPANと比べてしまうけど(^^;,そういう比較をしなければそれなりに用意はされている感じ.
(ただしマルチバイト処理が欠けてるのは残念…)
Erlangのメリットとして,かなり並列処理でスケールしてくれる以外にも,クラッシュダンプの取得・解析が標準装備だったり,実行中のプロセスの状態を外部から確認できたり,動作したままコードを差し替えたり,ちゃんとプロファイラとかカバレッジが標準で付いていたり,業務で運用する場合に便利な機能がいっぱい.
どちらかというと,言語そのものというより,Erlang VM の環境が素敵.なのかな.
Erlang + Yaws vs. Ruby on Railsなんて記事もあるようで,Webアプリ作成にも向いていそう.
日本で使うなら,文字コード周りの面倒とかみないといけないし,自前で色々用意しないとだめそうだけど(^^;
もう少し日本で流行らないかなぁ...
ぐぐっても利用者少ない(^^;
The comments to this entry are closed.
Comments