一昨日の話への反論

This entry was posted by on Thursday, 24 May, 2007

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

この論文は「スレッドはメモリの共有があるために状態が非決定的になる。したがって人間には予測しづらい」というのを問題点として指摘しています。であれば 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 というのはわたしはまだよくわかっていません。

3 Responses to “一昨日の話への反論”

  1. hnakamur

    ErlangやHaskell自体は主流にならないかもしれないけど特有な考え方を知っておくのは面白いという点は同意です。これはオブジェクト指向を学ぶには、マルチパラダイムであるC++などの言語よりも純粋なオブジェクト指向言語であるSmalltalkを見たほうが特徴が際立ってわかりやすいというのと同じだと思います。Haskellでの遅延処理がデフォルトである点とErlangのメッセージパッシングによる並列処理が特徴的なところだと思っています。(続く)

  2. hnakamur

    たとえ他の言語でライブラリを使ったりして実現できるとしても、一度はErlangやHaskellの世界をのぞいてみるのはためになると私も思います。記法が不慣れで気持ち悪いからといって、各言語の特徴的な考え方に触れる前に離れてしまうのはもったいないですよね。逆にそこさえつかめば、それぞれお気に入りの言語に戻っていけばよいと思います。そして、他の言語の便利な機能を必要に応じて取り込んでいける変幻自在な言語こそが生き残るのだと思います。

  3. 向井

    有難うございます。わたしが言いたかったこともおおむねそのようなことです。
    ただ、変幻自在といっても C++ はもうちょっと何とかならんもんかと思うんですが(OCamlの構文がもっと綺麗でとっつきやすかったらもっと流行ると思うんだけどなー)