OOPSLA 2005

2005年10月24日

またOOPSLAだ。カンファレンスがたくさんあり、あらゆる種類のアイデアがあった。このカンファレンスについて適切なレポートをすることは不可能だ。あまりにも多くのことがあり、人間が一人で参加し、理解することなどできない。ということで、これは散発的な思考だ。

Onward!トラックでジョナサン・エドワーズとSubtextプロジェクトが復活したのを見るのは嬉しかった。Subtextは、私がこれまでに出会った中で最も魅力的な開発環境のアイデアの1つであり、また説明が難しいものでもある(サイトにアクセスして動画を見てください)。Language Workbenchesのように、ソースとしてテキストを使用することを避け、編集のために投影される抽象的な表現を好む。しかし、汎用的なワークベンチとは異なり、コードと実行例の両方を同時に表示することに特に重点を置いた特定の言語環境である。私はそれが非常に異質であり、言語ワークベンチが目指している非常に異なるプログラミング環境の一例であるため、気に入っている。

同じセッションだったので、コンカレンシーに特化した研究言語を説明するX10のセッションも聴講した。マルチコアプロセッサへの注目の高まりと、それがコンカレンシーへのソフトウェアの根本的な変化につながるという見解を踏まえると、コンカレンシーが(ダグ・リー以外の)凡人でも扱えるように、どのように処理できるかを考えることが重要だ。X10のアプローチが正しいかどうかはわからない。結局のところ、私はコンカレンシーに関しては無知だからだ。しかし、この問題に対する言語ベースのアプローチは興味深い。(非難のメールが届き始める前に、Erlangについても言及しておこう。)コンカレンシーの話題になったので、ダグ・リーとの短すぎる会話についても言及しておくべきだろう。彼は、最近のマルチスレッドJavaは、メモリ管理とガベージコレクタのおかげで、Cよりもはるかに優れたパフォーマンスを発揮するとコメントした。もし私の記憶が正しければ、彼は「Cより12倍速い程度では、まだ最適化を始めていないということだ」と言った。

リファクタリングの分野でいくつかの興味深い進展があった。フランク・ティップは、リファクタリングの実装を支援するために、型推論技術の使用に取り組んでいる。彼はまた、リファクタリングを使用してライブラリ変更時にクライアントコードを自動的に移行する論文にも携わった。この場合、古いJava 1.0コレクションクラスを削除している。ジョン・ブラントドン・ロバーツとこのことについて話し合ったところ、彼らはこの種の移行をかなり前から行っていると言った。そのほとんどは、Smalltalk実装間の移行(簡単な問題ではない)だが、いくつかのクロスランゲージ移行もある。残念ながら、これについてはまだ何も書かれていないが、彼らはこの作業の重要なツールはSmaCCであると述べた。別の廊下での会話で、ジェニッタ・アンドレアは、彼女が一緒に働いているチームで、リファクタリングツールがプログラミングの塊についての考え方を変えたことに気付いたと述べた。

私の同僚であるイヴァン・ムーアナット・プライスは、スクラップヒープチャレンジを開催した。そのアイデアは、問題を提示し、インターネットからソフトウェアをダウンロードしてそれらを組み合わせることで、90分以内に解決策を構築させることだ。本質的に、これはポストモダンプログラミングの探求である。それは小さなワークショップで、初めて開催されたことを考えると、おそらく良いアイデアだっただろう。これは他のカンファレンスにもうまく適用できるアイデアのように思われる。アクティブで、異質で、面白い。

ブライアン・フットの動的言語開発の歴史に関する講演は、多くの聴衆を集めた。結局のところ、彼はソフトウェア界で最もジョーク/分あたりの平均値が高い人物の一人だ。(「Javaはダイエットコボルだ」、「XMLは[悪魔の]角のついたlispだ」)といったジョークの中で、ムーアの法則の収益の一部をシステムのより良い自己監視に費やすべきだという彼の要求に、私の注意を引かれた。そうすることで、ソフトウェアをデプロイする際に必ず発生する問題をより簡単に見つけて修正できる。対戦相手がゴールできないことを証明できると思ったからといって、良いゴールキーパーを配置しない理由にはならない。

メアリー・ベス・ロッソンは、「ユーザー」という概念を捨て、「ユースデベロッパー」(メールフィルターやスプレッドシートなどの独自のツールを構築する人々)について考えるべきだと示唆する基調講演を行った。これらのユースデベロッパーは、ユーザビリティと機能について考える上で異なるアプローチを必要とする。これらのユースデベロッパーは、より優れたツール(Language Workbenchesよ、こんにちは)と、ソフトウェア開発について学んだことの多くを取り入れたより優れた実践を必要としている。

この中で、彼女がAliceをベースにした教育システムについて言及したことに心を奪われた。子供たちは、欠陥を含むシミュレーションを紹介され、それを修正するように求められた。もっと多くの教育をこのように行うべきだろうか。学生にバグのあるプログラムを修正するように求めたり、よりトリッキーな方法で、正しく動作するが醜いプログラムをリファクタリングするように求めたりする。

私の講演についてはあまり言わないが、一番良かったのはおそらくブライアン・フットの紹介だろう。

サンディエゴ動物園での夜のパーティーを欠席して、ソフトウェアアーキテクチャのハンドブックを作成しようというグラディ・ブーチの取り組みに関するBOFに参加した。彼の目的は、さまざまなソフトウェアシステム全体を見て、そのアーキテクチャの簡単な概要を提供することだ。結果として得られる大著は、人々が学ぶための多くの例を提供するだろう。それは巨大で必要な取り組みだ。本番環境で時間を費やしたシステムには、多くの教訓が学ばれている。我々はそれらから十分に学んでいない。

OOPSLAは面白いカンファレンスだ。当初、私はRubyConfとの違いに非常に驚いた。RubyConfは、若く、焦点を絞り、自信に満ち溢れたカンファレンスだ。思春期の子供のように、すべてを知っていて、不可能を信じることを拒否する。OOPSLAは、もはや目的のない、たるんだ中年カンファレンスだ。結局のところ、オブジェクトは(少なくとも表面上は)ソフトウェアの支配的な分解となるという探求に勝利したからだ。したがって、もはやオブジェクトを擁護し、それらを嫌がるソフトウェア開発コミュニティに押し付ける理由はない。今や私たちは皆、OO使いだ。

したがって、初日の私の最初の会話は、OOPSLAが2000年に解散しなかったことを嘆くことだった。私たちは勝利した。さようなら。結局のところ、私が基調講演を行うことになったのは、OOPSLAがいかに堕落したかの証拠ではないのか?しかし、カンファレンスが進むにつれて、私はそれをますます楽しんでいることに気づいた。何よりも、OOPSLAはコミュニティであり、OOを擁護することは古いことだが、そのコミュニティの人々は他の多くの興味深いことに移り変わっている。OOPSLAは、このすべてのことをキャッチアップするチャンスだ。

これが新しい人にとってどのように機能するのかは、あまり確信が持てない。カンファレンスの会報には、OOPSLAの内輪に文句を言う人からの記事があった。それは、長く続いているカンファレンスコミュニティの必然的な結果だろうと私は推測する。これは友人が集まって近況を報告するチャンスなので、彼らは多くの時間を一緒に過ごす。新参者がその副作用を楽しいものだと感じることを願うが、OOPSLAは内輪効果を避けることは決してできないだろうと思う。他の長年続いているカンファレンスもそうだろう。

他のレポートには以下が含まれる:イヴァン・ムーアユージーン・ウォーリングフォードトラビス・ギッグス

(すべての引用は記憶に基づいており、したがって概算です。)

動的型は、実行時に逃げ出さないため、静的型よりも強力である。

-- ブライアン・フット

Eclipseには「ボタンを当てて」というユーザーインターフェイスがある。

-- ジェームズ・ノーブル

静的型は、私の座席クッションが浮き具として使用できるという発表と同じような安心感を与える。

-- ドン・ロバーツ