OOPSLA

Guy Steeleのキーノート。OOSPLA '98では
http://www.brics.dk/~hosc/local/HOSC-12-3-pp221-236.pdfという講演をしたらしく、それがhttp://homepages.inf.ed.ac.uk/wadler/にも書かれているようにとても話題になったそうであるが、今回は多分Fortressの説明としてはスタンダードなもので、スタイルとしてはコンサーバティブ。(OOPSLA '98にはいたはずなのに思い出せないが)。

ひとことまとめとしては、Fortressは良いところがたくさんあるということだ。

Onward!トラックに移って、Charles SimonyiによるIntentional Softwareの発表を聞く。ご存知のようにCharlesはBravoというワープロソフトを書いて、出来が良かったのでMicrosoftに引き抜かれてMS-Wordを書いた人である。コードの内部表現と外部表現を切り離して、いろいろな見た目と編集環境を提供するということである。Jonathan Edwardsのやつににているかも。どちらかといえば、Charlesを目撃したことで満足。その後Essayトラックにさらに移った。もしかしたら面白い話だったのかもしれないが、途中からだったので乗れず。システムデザインというものを大学教育で教えることができるのかどうか、という話。大規模なオープンソースプロジェクトのコミッターでない教授が教えるのはおかしい、というような言葉もあったが。

午後のテクニカルセッションは、まずcontext-sensitive parsing。モジュラーなパーザーとスキャナーをコンテキストに応じて使い分けるというものだ。Ianのやつでも似たようなことはやっているが、まあきれいといえばきれい。Javaだけど。また書くが、TeXのように、入力ストリームそのものがプログラムから見えていて、ストリーム内の次の文字列の解釈を変えることができるようなモデルが面白いのだがな。method specific optimizationは、大きなデータセットでメソッドごとにどのようなコンパイルオプションを使うべきかのヒューリスティクスをデータベースを作り、その後ベンチマークプログラムをそのヒューリスティクスに基づいてメソッドごとに違うコンパイルオプションでコンパイルして性能が出るかどうかを試した。SpecJVMのように、既存のVMが高速化を目指しているようなベンチマークであっても5%とかの向上が見られるし、それ以外の例では50%くらい速くなるベンチマークもある。教訓としては、SpecJVMを使ってJava VMのチューニングをしても、一般の例では遅くなることも多々あるということであった。Replay Compilationは、JITのでバッギングをするときに、JITがどのような入力を元にどのような変換を行ったのかについて、入力データの保存に必要な容量をなるべくせつやくするために、不変なデータはコアダンプに入るので保存するのは捨てて、可変なデータのみを保存するようにした。Ianのやつでも、なんらかのフレームワークは必要になるから(まあ考えているけど)、それなりに興味深い。

夜は、科学博物館でパーティー。なぜかスターウォーズの展示をがんばっていたが、その他体験型の出し物がたくさんあっておもしろかった。