Sunday, 10 June 2007

Committed Choice Language



プログラミング言語シリーズ

なんか、これから那覇にカラオケにいくらしいです。声は復活してないけど。

プラズマディスプレイノートは使ってないので、たぶん、他の人と間違えていると思う > Kenji_R, LISP とGHCなら、近山さんか寺田さんか...

でも、大型計算機センタの村井さんのところで東芝のプラズマディスプレイのラップトップでX11が動いているのを見た時の衝撃は良く覚えてます。実際に自分で動かすようになるまでは、さらに数年が必要だったけど。

GHC ってのは、Guarded Horn Clauses の略で、Prolog の拡張の一種。上田さんが作った言語です。近山さんのKL/1 という実装が今でも手にはいるはずです。大学の同期は、Fleng とかを作っていた。どちらも、Commited Choice Language と呼ばれる並列プログラミング言語です。Prolog は決まった順序でclauseが実行されるわけなんだけど、別に、決まった順序で実行する必然性はない。なので、全部、同時に動かそうってな感じの言語です。もともとは、Parlog とか Concurrent Prolog とかだったはず。Hoare の CSP とか、Dikstra の(なんだっけ?)言語まで遡れるはずだ。

ようするに「基本的にすべて並列に動く言語」というわけ。しかもハードウェアと違ってクロックがない。並列に動く台数を増やせば「自然に」台数効果が出ると言うデータフロー的な並列言語です。

これが、とっても楽しい言語でさ... Prolog 自体も習得するのが難しい言語なんだが、飛び抜けて難しいです。なにせ、「字面で見た順序に動くことはない」言語だから。どこかで、

 A=1
とかやると、およそで、
 A=:=1,p(B,C).
とか、やっているのが動き出すという感じ。共有変数への代入で同期して通信するという形だね。

人間のプログラミング認識能力の限界を試されている感じ。とは言え、ほとんどは Stream を中心に動くので、それさえ理解してしまえば、どうってことはないです。そんな言語なので、こいつを使った後では、少し頭の構造が変わる気がする。見たものを信用しなくなると言うか、文字で考えなくなるというか、そんな感じ。

さらに、この上の上位言語で吉田かおる嬢の作ったA'umというのがあるが、実際に触ったことはありません。

ちょっと、計算の基本単位のコストが高いのと、参照の局所性を低くすることが難しく、分散GCを実装しなければいけないとかあって、結局は、ダメだったわけだけど。でも、Prolog と同じで「難しすぎる」ってのが一番のネックだったと思う。僕も似たような並列言語を作ったことはあるので、人のことは言えないんだが....

自分でどれだけ書いたかと言うと、数十行を越えたことはないです。

No comments: