関数型言語を触ってみる(その8)

  • 6章 並列プログラミング(フィボナッチ数を求める関数のところから)
    • concurrent(並列)(parallelではないのか。複数のCPUを使うわけではないのね。だったら並行か...)
    • 自分自身のPidを得るにはself()関数が使える(ほー)
    • メッセージを待機する部分はreceive部分を再帰呼び出しすることで実現できる(関数がでてきてから再帰ばかりだ...)
    • LinuxErlang実装では-smpオプションを指定することで、SMP(対称型マルチプロセッシング)が有効になる(え、複数CPUで並列実行できるのか...)
    • ノードとは1台以上のコンピュータで動作しているErlangの実行環境のこと(ふむ)
    • 1台のコンピュータで複数のErlangシェルを起動することで、複数ノードとして利用できる

デュアルコアCPUでは結構簡単に並列化できるのだなー。
この本ではErlangシェルからしかコードを実行していなかったが、もう少し大規模の本格的なプログラムになった場合、どう作るのかとか興味がある。

並列化の部分はまだ理解からほど遠い。他の言語と比べた場合の際立った特徴やそれがどう役立つのか、等、掘り下げていく視点はまだまだたくさんある。並列化の部分は、他の言語でもフィボナッチ数をもとめるコードを並列化してみれば、違いが見えてくるかもしれない。