プログラミング言語 Erlang 入門
柏原正三
図書館から借りてきた関数型言語の本,3冊目.表紙の8ビットゲーム機っぽい絵が,言語の妙に古いデザインにマッチ.
ErlangはPrologから派生した並列言語で,エリクソンの社内で20年ぐらいまえから使われていたらしい.言語のデザインとしては,当然ながらPrologの影響が濃くて,変数名は大文字とか,小文字から始まるとアトムだとか,ガードだとか単一代入変数だとか,なにもかもみな懐かしい...
特徴は,プロセスを容易に作ることができること.プロセスといっても,1ノードで動かす際の実装はスレッドだったりするのだろうが,メモリをまったくを共有しないので,スレッドではなくプロセスと呼んでいる.プロセス間の通信はメッセージパッシングのみ.単一代入変数があれば,変数を共有して通信したくなりそうなものだが,そういうファンシーな部分を廃して,愚直な方法をとっているところが,今日まで生き延びてこられた理由なのだろう.複数ノードで実行する分散環境も実装されていて比較的容易に利用できるようだ.
うーん,しかしプロセス間通信をするだけなんだったら,なんで関数型言語じゃなければいけないんだろう.しかもこんな古くさい.もっとモダンな言語にプロセスだけ導入すればよさそうなものだが.
「はじめに」に,Erlangがマルチコアに適している,と書かれているがそうなんだろうか?せっかく単一代入変数を導入するんだったらもっと直感的で効率のいい並列言語のデザインがあると思うのだが.