最新

val it : α → α = fun

<<  2007/05  >>

2007/05/24 一昨日の話への反論

えーと一昨日あのように書いたわけですが、まつもとさんがリンクしていた論文に、わたしの書いていることとは違うことが書いてあったので、バランスを取る意味からも紹介したいと思います。

この論文は「スレッドはメモリの共有があるために状態が非決定的になる。したがって人間には予測しづらい」というのを問題点として指摘しています。であれば Erlang のようなものがプログラミング言語の未来だといった結論になってもおかしくありません。しかし、著者は

Regrettably, programmers seem to be more guided by syntax than semantics.

と述べた上で、

Alternatives that replace these languages with entirely new syntax, such as Erlang or Ada, have not taken root, and probably will not.

と主張しています。「probably will not」てなだけで根拠は上のもの以外に特にないんですが、こう言われてしまうと「そうかもなあ」という気もします。「こんなところで萎えている場合じゃないだろう」っていうのは言いすぎかもしれませんね。

もうひとつ面白いのは次の主張かな。

Whereas a general-purpose concurrent language like Erlang or Ada has to include syntax for mundane operations such as arithmetic expressions, a coordination language need not specify anything more than coordination.

つまり、 Erlang のような言語だと、並列プロセスというのは非常にカジュアルに作るというモデルになっています(誰かがどこかで書いていたけれど、オブジェクト指向言語でインスタンスを作るように気軽にプロセスを作る、というように)。これはモデルが違いすぎるので受け入れられづらいんじゃないか、という主張としてわたしは読みました。

そうではなく、並列性以外の部分については通常の言語であるが、並列性についてはきちんと(わかりやすい方式で)利用可能なもの、というのが著者の想定みたいですね。なるほど。

えーと、私のスタンスをここで明らかにしておくと、これから先に Erlang のモデルが主流になるとは思っていません。面白いとは思うけれど、やっぱりもっと穏当な落とし所をみつけた言語が作られて、それが流行ると思う。でも、 Erlang のモデルを知っておくことは個人的には面白いし、知っているといいことがあるような気がするとは思います。

ちなみに Haskell についても同じことを考えています。 Haskell が実用的に使えるかどうかというのは、私個人の興味としてはありますが、それがどうであろうと、 Haskell がそのままのかたちで流行るということはないでしょう。でも、ここで考案された特有な考え方は、便利であれば何らかのかたちでどこかに広まっていくんじゃないでしょうか。そんな風に思っています。

この論文の著者はそういう視点では論じていません。最終的にプログラミング言語はどうあるべきか=みんながメリットを享受できるような主流の言語はどうあるべきかという議論で、そうであればわたしが上で書いた「落とし所」というやつが、この著者と同じことなのかなあ、とは思います(我田引水すぎ?)。ただ、 coordination language というのはわたしはまだよくわかっていません。