19章並列性
長い目で見ると、大きな並列プログラムを、任意の場所に値を保存でき、アドレスを任意に利用できるような、計算機に依存した言語で書くことは推奨できない。このようなプログラムを高い信頼性を持つようにすることは、不可能だからだ(複雑なハードウェア機構による補助があったとしても)。
−Per Brinch Hansen(1977)†1
[†1] 訳注:デンマーク出身のコンピュータ科学者。並列言語、分散オペレーティングシステムの研究で知られる。
通信のパターンは並列性のパターンだ。
−Whit Morriss
並列性に対する態度が、自身のキャリアの変遷によって変化するのはよくある話だ。
最初のうちは、並列コードを書くのは簡単で楽しい。スレッドやロック、キューなどの道具を使うのは簡単だ。確かに落とし穴はたくさんあるが、どこにあるかはわかっているので、ミスを犯さないように注意すればよい。
ある時点で、他人の書いたマルチスレッドコードをデバッグすることになり、ある種の人たちは並列コードを書くべきではない、という結論に至る。
さらに、その後自分で書いたマルチスレッドコードをデバッグするはめになる。
そして、経験によってマルチスレッドに対して、完全な冷笑主義ではないまでも、健全な懐疑主義を持つようになる。ときおり、明らかに正しいように見えるマルチスレッドのコードがまったくうまく動かない理由を説明した記事を見かける。これらの記事の心が麻痺するような詳細な説明によって、懐疑主義はさらに強固になる(これは、あの「メモリモデル」によるものだ)。しかし、最後には毎回のようにミスを犯すことなく実用的に使えると思われる並列実行手法に辿り着く。何でもこのイディオムに突っ込むことになる。そして、(本当に
Get プログラミングRust 第2版 now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.