Clojureの並列処理(concurrencyとparallelismのことも)

Posted by TAKAIY On 2011年10月8日土曜日 0 コメント

incanterのことを調べていて、こんなのを見つけた。
だいたい1年前のポストなんだけど、Java1.7で予定(当時は)されていたFork/Joinを使った新しいClojureの並列処理機能についての解説のスライドの紹介記事。

このスライドはpmapの動作原理や、それに対する新しいpmap(pvmap)がどうよくなっているかなど書いてあって、Javaに疎い僕にはとても勉強になった。



ところで、このスライドはこんな文章で始まっている。

Concurrency is commonly mistaken for parallelism, but the two are distinct concepts. Concurrency is concerned with managing access to shared state from different threads, whereas parallelism is concerned with utilizing multiple processors/cores to improve the performance of a computation.
(下手訳)
Concurrencyはよくparallelismと間違えて使われているが、2つはまったく違うことなんだ。Concurrencyというのは、スレッド間で同じ状態を共有する仕組みので、parallelismというのは、計算速度を上げるために複数のプロセッサやコアを使うことを指しているんだ。


ああ、そうなのか。 だから、Concurrencyについての説明がrefやatomやagentやvarの話でであって、処理のpmapの話じゃなかったわけか。
やっとわかった。

でも、parallelismとconcurrencyって、日本語ではどちらも「並列(性)」って訳されていて、そういう意味の違いをうまく表わせていないよね。
alcで引いてみても、特に電算関連では、同じことが書いてある。だれか上手い訳を考えておくれよ。

parallel
【名】
  1. 《電》並列
parallelism
【名】
    平行、並列性、並行論、対句法、並列処理、平行度

concurrent
【形】
  1. 《コ》並列
concurrency
【名】
    同時並行性

0 コメント:

コメントを投稿