Eiffel になくて C++ にあるもの(Worse Is Better ではない)

オブジェクト指向入門 第2版 方法論・実践を読みました。

オブジェクト指向入門 第2版 方法論・実践 (IT Architects' Archiveクラシックモダン・コンピューティング)

オブジェクト指向入門 第2版 方法論・実践 (IT Architects' Archiveクラシックモダン・コンピューティング)

上巻の原則・コンセプトを読んだのが約一年前のことです。

オブジェクト指向入門 第2版 原則・コンセプト (IT Architect’Archive クラシックモダン・コンピューティング)

オブジェクト指向入門 第2版 原則・コンセプト (IT Architect’Archive クラシックモダン・コンピューティング)

上下巻を貫く著者のスタイルを一言で言うと「正しさへの固執」になります。オブジェクト指向の正しさや言語表記・機能の正しさを正確に証明することにエネルギーを注ぎます。「契約による設計」もその一環です。こういった姿勢は大変素晴しいのですが、同時に、どこか力の入れどころを間違っているのではないか、と疑問に思うことがありました。

正しさなんて相対的で流動的なもの、という立場からすると、数学的な証明をオブジェクト指向に適用することに、そもそも無理があるのかもしれません。たぶんこれが、上下巻を通してついに消えることがなかった違和感の正体です。

Eiffel はオブジェクト指向的に正しくて、C++ を使う人は「どこか病気」なのかもしれませんが、それでも C++ は今でもメインストリームで使われているという事実がはからずも、C++ の正しさを「証明」しているような気がします。これを、Worse Is Better でひとくくりにして C++ は Worse だと断じても仕方がないことです。ただ単に C++ は「ある側面」において better であり、right thing だったというだけなのだから。

下巻には、抽象度の高いコンポーネント群のコラボレーションにおける普遍的な課題や解法のほうを期待していたのですが、そういったケーススタディはなく、中盤以降は出版当時の時代背景を反映した古臭さを感じさせる内容です。クラスの見付け方あたりまでは上巻とは異なる著者(あるいは訳者)の「熱い想い」のようなものが感じられただけに、残念です。

自動更新辞書について

自動更新辞書のトラブルについては申し訳ない限りです。今回は adhoc な対応を入れてますが、どうするのが良いのかは、今後も継続して考えていきます。ベストプラクティスを思い付くのがいつになるかわからないので、とりあえず対応を入れておこうということです。

障害パターンの洗い出しなどは色んな見方ができたほうが良いので、本質的にチーム向きの作業ですよね。XDev 2008 で「失敗学」の畑村先生の話を聞いてきたので、そのあたりのこともいつか書きたいと思います。

IMK 版の進捗

機能的なところは固まってきていますが、ヘルプ等のドキュメントが全く進んでいません。これはやる気を出すだけの問題。あとはリリース後の話ですが、開発者向けに全体アーキテクチャ的な図を何枚か書いたので、補足ドキュメントをこしらえます。