まえがき

ほぼ15年にわたって、Glasgow Haskell Compiler(GHC)の開発者の一人として、Haskellがニッチな研究言語から、豊かで刺激的な生態系にまで成長するのを体験してきました。その間の大部分の時間をGHCが並列性と並行性をサポートするために費やしました。1997年にやったGHCに関する最初の仕事の1つは、実行時システムを書き換えることでした。そのときの重要な決定事項は、並行制御機能を付加的なライブラリとしてではなく、実行時システムの核にしようということでした。この決定には鋭い先見の明があったと思いたいのですが、並行制御のオーバーヘッドをゼロ近くまで低減する方法を見つけたことに導かれたのが実際のところです。(直前までに2%のオーダーになっていました。みんなずっと性能追求の虜になっているのです)。並行性を必須にしたことは、並行性はいつでも実装の第一級の部分になることを意味します。筆者はこの決定が、GHCの堅牢で高速な並列性を実現した要だったと確信しています。

Haskellには並列性に関係する長い伝統があります。いくつかのプロジェクトの名前を挙げると、並列性のために設計されたId言語の流れを汲むHaskellの変形版pH、クラスタ内の複数のコンピュータ上で並列Haskellプログラムを走らせるためのGUMシステム、並列関数プログラムを走らせるために設計された完全なコンピュータアーキテクチャであるGRiPシステムがあります。どれも現在のマルチコア革命の前に作られました。問題は、ムーアの法則が有効で、コンピュータが高速になり続けている時代だったことです。並列性を達成するのは難しく、普通のコンピュータが指数的に速くなる状況では、並列性は割に合わないと思われていたのです。 ...

Get Haskellによる並列・並行プログラミング now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.