とみざわさん(その2)

これは、話半分という感じだなぁ。簡単に作れる代りに簡単なものしか作れな
い/動かないということはないですか? 単にその機能をつくるためだけに便利
なだけでは? あれば…が簡単につくれる機能というのは、それだけでは専用
機能と区別が付かなくて、いろんなものに使えるとか、さらに、害がない、と
いうような側面も考えないと言語/システム設計上まずいのでは?

# 横道ですが、(一般的な)言語の処理系つくるならMLが一番向いていると思い
# ます。

簡単なものしか作れない、ということはないでしょう。これってとみざわさんと2000年ごろにやった話を繰り返しているような気はしますが、SqueakだけでもeToysとかSqueakそのものとかのような言語処理系がありますし、そうでなくてもSmalltalkで書かれた証券取引システムみたいなものは実際に今も運用されているものがたくさんあるようです。

MLで普通のコンパイラを書くときれいに書ける、ということには同意しますよ。ただ、既存のインスタンスを変える必要がある、というようなものも世の中結構必要です。あるいは、ユーザーさんがちょっとしたスクリプトを書けるようにするときに、その処理系をどう書くのか、というような。抽象化されたスタックとかスタックポインターとかインストラクションポインターとかが言語から扱えるというのは別に限られたことしか実装できない特殊機能というわけではなく、他の言語をそこに落とし込むとき、というような場合にはかなり一般的に使えると思います。

 Greenspunの

"Greenspun's Tenth Rule of Programming: any sufficiently complicated C or Fortran
program contains an ad hoc informally-specified bug-ridden slow implementation of
half of Common Lisp."

というのは、多くの場合(Lispかどうかはともかく)、あてはまるかなあと感じています。

電話会議

粛々とまた8時間づつ離れた3大陸(2大陸+1島)の会議。話のリードはもちろんCarlyねたである。
僕も彼女とは一度あって握手した、とかいうことを書いても良いのだろう。いずれ共和党からどこかのなにかに立候補するという観測もありです。2008年は、Hilary+Oprah vs. Jeb+Carlyとかね。

Carly Fiorina

Hewlett-PackardのCEO Carly Fiorinaが辞任しました。うーむ。
http://www.nytimes.com/2005/02/09/technology/09cnd-hewlett.html

なんとなく、カーリー・フィオリーナとかヒューレット・パッカードとか書いておこう。

とみざわさん

> ★ Alan Kayのメールおもしろかったです。ありがとうございます。

僕も始めて読みました。ありがとうございます、鷲見さん。

> ★ Parcは(Alan Kayも)やはり偉大だ。

 PARCは偉大でした。

> ★ 私の言いたかったのは、結局AKがどう定義しようが、オブジェクト指向と
> いう言葉はかなり幅広い意味の言葉になってしまっているのと、AKの厳密定義
> のほうがむしろ少数派だろう、ということ。

 そりゃそうです。少数派なので屈折するんですよ。

> ★ ぼくも設計屋ではないしどちらかというと趣味ではないですが、コメント
> の範囲では、くめさんの意見のほうに遥かに近い。玉石混交のチームでプログ
> ラムをいじる時にはみんなが同じ理解に至ることが決定的に重要になります。
> 極論すれば、その視点から見たときには、スキーマ変更なんて怖い機能を皆で
> 使うケースは極めてレアです。

 なしでもいろんなものは作れますが、言語処理系とかデータベースとかを作る、というときには、動的機能を持った言語の言語要素にいろんなものをマップすればだいぶん簡単に作れますよね。

> ★ 設計だってオブジェクト指向ならlate-bindingは大切…ですよね?くめさ
> ん。よしきのいうlate-bindingってもっと特殊なものなのか?

このlate-bindingは、「動的ディスパッチ」というだけよりはもうちょっと言おうとしています。

> ★ ところで、クラスもいらないならselfはだめなの?

これは僕ですか?僕は「いらない」と書いた覚えはありませんが...このselfはSelfですか?

続き

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

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

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

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