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

Matzにっき

<< 2006/01/ 1 1. [教会] 元旦
2 1. 出産
2. 帰省
3. 到着
3 1. デジタル体重計のユーザインタフェース
4 1. [OOP] Classbox
2. [OOP] Classboxの実装
5 1. 帰宅
2. PCレスライフ
6 1. PC修理
7 1. 雪かき
2. [言語] プログラミング言語SRU
8 1. [教会] 断食安息日
2. あーめん
3. 筋肉痛・体調不良
9 1. 米子
10 1. [原稿] オープンソースマガジン3月号
11 1. [原稿] 日経Linux 3月号
12 1. [Ruby] Charming Ruby Compiler
2. [Ruby] The Open Nature Of Ruby
13 1. ニート娘に悩む親
2. Python Status Update
3. 泥縄
14 1. 宣教師のお手伝い
2. Simplified/Traditional
3. ボーリング
15 1. [教会] 代打不発
2. [教会] セミナリー補習
16 1. [原稿] 不達
2. 誕生日
17 1. [言語] 萌え指向プログラミング言語「萌香」
2. [Ruby] Classbox/R
18 1. [言語] CommonLispのpackage
19 1. これは便利! と思える elisp プログラムを教えてください
20 1. [OOP] 「オブジェクト指向神話」神話
21 1. 片付けの日
2. 食べ放題は危険
22 1. [教会] 松江
2. お客さま
23 24 1. [Ruby] ruby_block撲滅運動
2. 『4086301636』
25 1. [Ruby] 遅延Enumerable
26 1. Thinkpad復活
2. Rastに挑戦?
3. オープンソースの全文検索エンジンの速度性能比較」のご紹介
27 1. [言語] 「Javaの生みの親」に聞く「AJAX、LAMP、Ruby on Rails」
2. [OOP] 「オブジェクト指向」改め「抽象データ指向」
28 1. [言語] LINQ
2. シガーソングライター(もどき)
29 1. [教会] 慈愛
2. [教会] 天国
30 31 1. [OOP] サブジェクト指向
>>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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