並行
同時に計算を行うこと
実行方法は規定しない
同時に計算しているように見えさえすれば、
その実装方法がマルチコアでも
なんでもいい
見かけ上は複数の処理を行うが、実際は素早い切り替えを伴う逐次実行
という説明は誤っている(本来より狭い)らしい ref とはいえ、これの出典はどこなんだろう
この意味で「並行」を使う人のほうが多い(?)ので、どちらにせよ混乱生みそうだねmrsekut.icon
並行性とは、 複数のスレッドを持つプログラムを構築する技術です。 概念的には、スレッドを「同時に」 実行するとは、これらのエフェクトがユーザから見て混ざり合うことです。 実際にスレッドが同時に実行されるか、 あるいはそうではないかは実装の詳細であり、 並行プログラムは単一のプロセッサ上で交互に実行しても、複数の物理プロセッサで実行しても構いません。 ref /mrsekut-book-4873116899/023 「スレッド制御」の概念は、 純粋関数的なプログラムでは意味を持ちません。 なぜなら、そこには観測されるエフェクトが存在せず、評価順序も重要ではないからです。 つまり、 並行性はエフェクトを持つコードの構造化技術ということです。 これは、 Haskell では IO モナドのコードを意味します。ref /mrsekut-book-4873116899/023 並行性はeffectが絡む際に問題になる
つまり、HaskellではIOモナドが絡む時だけの話になる(?)