OO エンジニアの輪

http://www.ogis-ri.co.jp/otc/hiroba/others/OORing/interview31.html

で、その後 COBOL をちょっと覚えたから、この業界でやってみようかなって思ったら、20歳前後の若い人が C 言語をバリバリやっててまして。もう愕然としましたねー(笑)。「俺は甘かったかな」っていう感じだったんです(笑)。(中略)Smalltalk とか、これは何なんだろうなっていうふうに思いながら、少しずつ関心を持ち始めたんです。

本当に甘いな.大昔の言語を一つ囓ったくらいで専門家きどりとは.
もっと大きな問題は,(静的な)型のない言語しか知らないのではないかという点だ.もし型の使い方も知らないのなら,オブジェクト指向を理解するには10年早い*1

分かりやすく作ることっていうことがオブジェクト指向の最優先で。要は、分かりやすさがオブジェクト指向の良さの 80% くらいで、再利用とか拡張性っていうのは残りの 20% で考えればよいって話なんですよね。この事を初心者のみなさんには是非とも頭に入れておいてほしい。どうしてもオブジェクト指向をやると難しく考えてしまい、再利用とか拡張性を追求し、分かりやすさを疎かにする傾向がありますからね。

オブジェクト指向が何かと言えば,やはりカプセル化ポリモフィズム継承を挙げるべきだろう.これらは決して「単純なものごとを複雑にする技術」ではなく「複雑なものごとをシンプルにする技術」だ*2.シンプルさは再利用性や拡張性の基本だから,それらは別個の話というわけではない.*3
また分かり易さを疎かにするのは,間違ったオブジェクト指向が広まってしまったせいではないか?*4

ソフトウェアを理解したり、認知したりするっていう行為の側面では、現実世界を認知するっていう行為とほぼ同じでしょう。人は、目を瞑って考えている時は、現実世界の「もの」も、ソフトウェア世界の「もの」も同じようなイメージとして処理しているのではないでしょうか。

同じだろうか?
例えば「形あるものはいずれ滅びる」のが現実世界の真理だ.夜空の星々さえも永久不変の存在ではない.永遠不滅にして不変である存在.まるで神のような存在をごく普通に仮定できる世界が,現実と同じと言えるだろうか?*5

例えば、デザインパターンなんかも、あれはみんな思ってたことだけども、パターンを作ることによって、今まで無かったものがあったかのように見えるわけですよ。

違うな.今までも存在した.だがそれらは大系づけられていなかったために学習するのが困難で,一部の専門家を除いては理解できない代物だった.今ではそれがGoFにより大系づけられ,名前が付けられ,書籍として誰もが入手できるようになった.より学習が容易になり専門家なら誰でも利用できるようになった.それが違いだ.
デザインパターンの存在はGoFの登場以前も以後も,何も変わらない.変わったのはそれを巡る状況だけ.

もともと、理想と現実を繋ぐのが私の永遠のテーマなんですよ。理想っていうと、上流ですね。現実は実装ね。

....最低だな.
上流工程屋が掲げるのは理想ではない.幻想だ.

リソースの管理に問題がおこってますよね。その問題を解決するためには、プログラムの接合点を管理可能なビジュアルツールありきで考えるべきなのに、現在のところそのような動きが見られないように思うのです。

CASEツールの再来と言われる,あのMDAのことか?

一方で、単なる『ナイト・オブ・ザ・リビング・CASEツール/ゾンビの誕生*1』に過ぎないという人もいます。私は後者の立場ですが、こういったうまい言い回し以上の何かが必要だと感じています。
http://capsctrl.que.jp/kdmsnr/wiki/bliki/?ModelDrivenArchitecture

*1:静的型を使ったプログラミングなど,もう二十年も三十年も昔からあるソフトウエア工学の基礎の基礎だ.今となっては静的型の重要性を説くのも馬鹿馬鹿しい.静的型を使うかどうかは言語や利用分野によっても異なるとは言え,(静的な)型安全性を知らずしてオブジェクト指向を語るのは,まるでかけ算や九九を知らずして微積分を語るようなものだ.
たしかに微積分は面積や体積を使ったモデルで説明できますけどね.真に理解しようとなると整数論ε-δ論法が必要になるんだっけ?ちなみに使うだけなら,そこまで高度な知識は必要ない.この点もオブジェクト指向と同じで,使うだけなら多くのJavaプログラマーが意識せずに使っています.

*2:複雑になるのは乱用した結果だろう.特にUMLモデラーにこの傾向が強く見られる.

*3:ところで80%と20%と聞くとつい80:20ルールを連想してしまう.ひょっとしてここで言いたいのは「全体の80%を占める分かり易さがオブジェクト指向の良さの20%で,残り20%を占める再利用こそが良さの80%を占めるオブジェクト指向の本質だ」ってことかな?
というかずばりそのものな気がする.分かり易さだけならオブジェクト指向を使う必要はない.その再利用性,拡張性を使いたいからこそ,オブジェクト指向を使う必要も出てくるというもの.

*4:間違ったオブジェクト指向が広まったせいで,日本におけるオブジェクト指向の発展は十年は遅れたと思う.

*5:数学における「大きさのないもの」「幅が無く無限の長さを持つもの」,「零」や「無限大」や「極限」や「虚数」が,果たして簡単に認知したりできるものだろうか?無限を想像できる心を持つ人間など,はたしているのだろうか?