続き

そもそもは、オブジェクト指向といったときに、それが何をさすかということに関する意識の違いがあるわけですよね。コンピュータそのものが、同じように強力だけど小さなコンピュータから再帰的に構築されている、という「元気で変化に強く記述力も高い」のオブジェクトというものを念頭に置くのと、Cのstructみたいなものだけど、privateとかpublicとか言えて、メソッドという引数を一個余計に取る関数と組み合わされている、という「弱いモデル」を念頭に置くのとの違いがある、という。"object-oriented programming"という言葉が始めて使われたときには、前者を指していて、そのシステムも作られて、書かれたものもいくつか存在したわけです。

これは「プログラミング vs. 設計」という対立軸とは違います。オブジェクトというものがどういうものであるかという視点の違いで、原理的には2x2の表の4つのマスにそれぞれあてはまるものがあってもおかしくはないのかもしれません。ただ、現状は「強い方のモデルに基づいたオブジェクト指向設計」というマスを埋められるものはないのかもしれない、ということが言いたかったわけです。

 「プログラミング言語の視点だけで」というように、あたかも設計と言語が切れているような言い方をしたつもりはありませんよ。あと、「これがオブジェクト指向だ」と言う言い方よりは、「最初はこれがオブジェクト指向だった」と言っているわけです。今はいろいろな意味で使われていることはもちろん知っています。waterfallも、ある一人の人が言い出して使われ始めたわけですよね?それがどのくらいオブジェクト指向と違うのかは良くわかりませんが...

 話は変わりますが、Alan Kayソフトウェア工学の会議に招待されたときに"Is 'Software Engineering' Oxymoron"とか何とか言う題の招待講演をした結果、お呼びがかからなくなった。Turing賞受賞講演は受賞者が自分の行きたい会議を選んでそこで講演するので、ICSEにまた言って同じようなことを主張しようか、と言っていたものの結局は日程の都合からOOPSLAに落ち着きました。