«前の日記(2006年01月19日) 最新 次の日記(2006年01月21日)» 編集

Matzにっき


2006年01月20日 [長年日記]

_ [OOP] 「オブジェクト指向神話」神話

「オブジェクト指向神話」という言葉があるらしい。 こことか、 こことかで見受けられる。

要するに「オブジェクト指向は万能ではない」 または「適材適所」という話なので、一般論としては異論はない。 私がいくらオブジェクト指向プログラミングの長年のファンだからといって、 「万能」だとか「魔法の薬」、「銀の弾丸」のようになんでも解決すると主張するつもりはない。

だが、実際にこれらのブログエントリにおいて 「オブジェクト指向に向いていない」とされているのはなんなのだろうか。

読み進めているとこういう記述にぶち当たる

ふむ、「モデリング」ね。いつから「オブジェクト指向=モデリング」になったのだろうか。 この辺が「神話」なのかな。 この日記に引用されているように、ナップザック問題を解くのに、ナップザックやら缶詰やらのクラスを作るだけでは、問題は解決しないだろう。 しかし、逆にプログラム中でナップザックやら缶詰やらを表現する「なにか」を用意しなければ、 問題を解決することはできないだろう。オブジェクト指向はその部分を支援するものであり、 それ以上ではない。

よって、これは「オブジェクト指向の問題」ではない。

では、これが「神話」と呼ばれるということは、 「オブジェクト指向で問題解決」というイメージがいまだに存在しているということなんだろう、たぶん。

実際には、オブジェクト指向プログラミングは、構造化プログラミングの「次」と 認識されるべきものだと思う(OOAやOODのことは知らんけど)。

プログラムの開発に構造化プログラミング(乱暴な言い方をするなら、gotoを使わない、データ構造を意識する、など)を導入することと、問題の解決を混同する人はいないだろう。構造化しようとしまいとプログラムが必要なことには変わりないのだ。

オブジェクト指向プログラミングもそれと同じレベルである。 (インテリジェントな)データを用意し、それを中心にプログラムを構成する。 あくまでもプログラムの構成方法だということを認識すれば、 どんな構成をするかでわかりやすさや保守しやすさ、あるいは開発効率に影響が出るにしても、 できないことができるようになるわけではないということを認識するのはそんなに苦ではないのではないか。

正直なところ、20世紀によく見かけた「オブジェクト指向幻想」はもうそろそろ収まっているのではないかと 認識していたのだが、まだ「オブジェクト指向神話」なんて表現を目にする現状では あらためて強調しておいた方が良いのかもしれない。

そして、21世紀の今、わざわざ構造化プログラミング重要と叫ぶ必要がないのと同じように 近い将来、わざわざオブジェクト指向プログラミングがどうこうと言わなくても 当たり前になるのだと思う。一部の特殊な状況を除いて。

もうとっくになっててほしかったんだけど。

言語デザイナーはもうそのことに気づいている。 だいぶ前から新しく登場する言語は(一部の例外を除いて)みんなオブジェクト指向言語だ。 この「常識」がすみずみにまで到達するのに何年掛かるだろうか。


«前の日記(2006年01月19日) 最新 次の日記(2006年01月21日)» 編集