OOPSLA

来年のOOPSLAはモントリオールということで、その紹介がフランス語こみで行われていた。

Philip Wadlerの"Faith Evolution, and Programming Languages."という題の招待講演。"the most cited computer scientist"ということだ(期間等は聞き逃したが)。

Wadlerはユダヤ系であることを折々触れるようだが、多文化主義と進化論の話からはじめていた。

Gentzenがナチのシンパであった事にも触れつつ、彼の推論規則(1935?)が論理学およびプログラミング言語における型理論の大きな基礎になっていること。Churchによってラムダ計算論が作られたこと。Curry-Howardによる型付ラムダ計算と自然推論の同型性、Hindley-Milnerの型理論Girard-Reynoldsの多相ラムダ計算などが生まれて、今の関数型の基礎になっていること。これらの名前のペアが表しているように、正しいアイディアというものは十分に優秀な研究者であれば、複数の人がそれぞれ独立にたどり着くものである。C++を複数人が思いつくようなことがあるだろうか?と言っていた。

その後は、Haskellのまじめな説明と、Java Genericsのまじめな説明と、ラムダマンへの変身(失敗してGuy Steeleに助けられていたが)と、ちょっとしたまとめ。

Java Genericsが行った、genericを使ったコードと使っていないコードの混在を許すためにした工夫を、「進化(evalution)」のためだといっていた。後は、Gentzenから連なる70年ほどの進歩も進化なのだと言っていたのだが、やっぱり科学的・数学的な積み重ねと、はやり廃りの話を「進化」というくくりに入れるのはいまいちかもしれない。この日記でも何度か書いたが、生物学的な進化のプロセスは、決して最適化や「進歩」を導くものではないのだから。後、「多文化」というときに、ダビデの星と十字架と、イスラムの三日月を出していたのだが、そこで一神教のものしか出てこないところに「視点」というものを感じたな。とはいうものの、なかなか良い講演だったと思う。

停電騒ぎもあってテクニカルセッションはあまり聞く元気が出なかったので、Camp Smalltalkのところでだべり。毛玉をデモしたりしていたのだが、闇雲に自分のやりたいこととつなげて話してくる人がいてちょっと閉口。Ryan Davisとはだいぶ話したし、David Simmonsが「はじめまして」と言ってきてくれたので、彼ともだいぶお話ができた(はじめましてじゃないんだけど)。彼はMicrosoftJavaScriptVBといった動的言語をやっているグループのリーダーの一人であるが、QKS Smalltalkという、いつまでも新バージョンが出ないことで有名だった処理系を作っていた人としても知られている。それより、Randy Smithにようやく挨拶ができたのが良かった。何年も機会がなかったのだよな。

午後は、Young Gunという若手研究者のパネルを少し覗いた後で、Rinardの招待講演。パネルのほうは、まあオーソドックスなことを言う優秀な若者達という感じでいまいちだったようには思った(途中までしか聞かなかったが、Alexも同様の感想だった。助教授達は、テニュアを取ることが最優先と言うばかりで、あまりcrazyなことはできないみたいだと。) Rinardの招待講演のほうは、エラーを全部つぶすことを目指すのではなく、上手に受け止めるべしという話。特にUIに関わるところでは、表示の際にメッセージが切れてしまったりしても、ユーザーが許してくれることが多い。既存の大きなオープンソースのプロジェクトをかなり大規模に調査していたが、バッファーオーバーフローとかがあっても、データのおしりをぶった切ったり適当な値で置き換えたりしても、問題のないところが多かった。バグは絶対に残るものなので、例外が出ても空のcatch{}で捕まえるのと同等な処理をしたり、もっともらしい値を変数に入れてしまったりしてプログラムを動かし続けるような方針でコードを書くべきだという話。Smalltalkerにしてみればまあ当たり前と思わなくもないが。

この講演に限らず、「大規模ソフトではバグは絶対に残るのだから、それをいかにembraceするべきか」ということが多くのところで語られていたOOPSLAではあった。

最後は、ACM のいくつかの表彰。Distinguished ScientistとかDistinguished Engineerとかも表彰されていたが、1986年から1996年までの間で、もっともインパクトのあったOOPSLAの論文を3本選んで表彰する、という今年から始まった企画が良かった。Pattie Maesによる"Concepts and Experiments Computational Reflection"、David UngarとRandy Smithによる"Self: The power of simplicity"、後は、"Subject-Oriented Programming"の話。この中で読んだことがあるのはDavidとRandyのやつだけなのであまり偉そうなことはいえないはずだが、彼らのやつが選ばれたのは非常に正しいと思われる(選考委員には松岡先生も入っていた)。

DavidとRandyはちょっと講演をしていた。Selfの論文は、新しいアイディアだが、証明もなし、速度評価もなし、既存のものの拡張でもなし、モダンだがポストモダンでもないと言っていた。Davidは、「このような論文は今採択されるだろうか?」と疑問を投げかけていた。今の論文選考の方法が合議制に偏りすぎて、incrementalなものが選ばれがちであり、面白い論文よりはPCの誰をも怒らせないことのほうが重要であるように思われる、と。

Randyも引き続いて話をした。performanceのために言語を犠牲にすることはない、オブジェクトの中に入っても、手続き的にコードを書くようにする必要はないというデザインの話と、direct manipulation UIとのシナジーが良かったという話。Alternate Reality Kitの話もあった。

DavidがXerox PARCにたびたび訪れて新しいことをやろうとRandyと話していたときは、毎回名札に手書きで名前を書かされていた。ある日それにうんざりしたDavidが、名前の代わりに"self"と書いて入ってきたことがあり、それがきっかけで新しい言語がselfという名前になったとか("name badge"という名前にしなくて良かった、と言っていたが)。RandyはPhDを理論物理でとったので、単純な原理を追求すると、より普遍性があっていろいろな使い方ができるものになる、という概念にはなじみがあったが、今のソフトウェアの作り方は単純性を求めてそぎ落としていくのではなく、、ほとんど何の役にも立たないコードを闇雲に追加する方向にある。単純性と動的言語の組み合わせという方向性を将来も残していってほしい、というメッセージであった。

というわけで、今回のOOPSLAはおしまいでした。