Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
Matzにっき(2006-01-20)
[go: Go Back, main page]

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

Matzにっき

<< 2006/01/ 1 1. 元旦
2 1. 出産
2. 帰省
3. 到着
3 1. デジタル体重計のユーザインタフェース
4 1. Classbox
2. 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. Charming Ruby Compiler
2. 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. Classbox/R
18 1. CommonLispのpackage
19 1. これは便利! と思える elisp プログラムを教えてください
20 1. 「オブジェクト指向神話」神話
21 1. 片付けの日
2. 食べ放題は危険
22 1. 松江
2. お客さま
23 24 1. ruby_block撲滅運動
2. 『よくわかる現代魔法
25 1. 遅延Enumerable
26 1. Thinkpad復活
2. Rastに挑戦?
3. オープンソースの全文検索エンジンの速度性能比較」のご紹介
27 1. 「Javaの生みの親」に聞く「AJAX、LAMP、Ruby on Rails」
2. 「オブジェクト指向」改め「抽象データ指向」
28 1. LINQ
2. シガーソングライター(もどき)
29 1. 慈愛
2. 天国
30 31 1. サブジェクト指向
>>
Dr.Web 予測するアンチウイルス  Hiki も使った新サイト、10/18 リニューアルオープン!

2006-01-20 [長年日記]

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

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

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

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

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

OOAやOODを重視し、クラス設計を行なう人が、まともに「動くプログラム」すら書けないことが現実的には多々ある。...(中略)...そもそも現実世界をソースコードにモデリングすることなど出来ないし、そもそもモデリングすることにどのくらい意味があるのだろうかと考えるようになった。

[オブジェクト指向神話より引用]

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

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

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

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

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

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

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

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

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

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

本日のツッコミ(全4件) [ツッコミを入れる]
_ wan (2006-01-26 16:49)

構造化プログラミングのことが話題にならないのは構造化プログラミングの次=オブジェクト指向がでてきたからではないでしょうか。
オブジェクト指向は構造化プログラミングが(暗黙の)前提(というか基礎というか常識というか)になっているのでしょう。
オブジェクト指向の次(って何)が出てきてその中でオブジェクトが常識になる、ということはないでしょうか。
しかし一番の原因はオブジェクト指向は関数とか単純なデータ型とかの概念からすると理解しにくいものだからだと思います。
(私は構造化プログラミングのなんたるかもよくしらないなんちゃってプログラマです)

_ 通りすがり (2006-01-26 23:39)

実はまつもとさんも微妙に危険な領域を歩いてるような気がします。「あえて乱暴に言うならgotoを使わない」という、ここなんですが。

かつてgoto文論争が不毛に終わったのは、分かってる人は乱暴に言ってるだけなんだけど、分かってない人がそれをバカ正直にとった所から始まったんじゃないでしょうか?前回のJava論争もそうなんですが、「実は構造化プログラミングすらよく理解されていない」という可能性の方が気になります。

オブジェクト指向神話が終焉を迎えたとして、その先には「モデリング神話」やら「XML神話」やらが積み重なるような。

_ まつもと (2006-01-27 00:38)

神話が繰り返し発生するのは仕方がないでしょう。避けようがありません。
楽な救いを見いだしたいのは人間の本能のようなものですし、それを煽りたてるマーケティング用語は次から次へと発生するでしょう。
「オブジェクト指向」の不幸はその定義があいまいだったこともありますが、純粋な技術タームとして生まれたのに、マーケティング用語として使われてしまったことにあるように思います。「構造化プログラミング」はやや不毛なgoto論争はありましたが、そういうマーケティングに使われなかっただけマシ立ったのではないかと思います。

もうそろそろ「オブジェクト指向」というタームにマーケティング的価値はなくなったと思うので、「構造化プログラミング」程度のポジションに戻してやってもよい頃ではないでしょうか。

_ arima (2006-01-28 04:45)

「本物のプログラマは Pascal を使わない」という言葉は、
ある種の呪いのように長く効果があります/したね。
「分割して統治する」ことを説明しやすい警句があるとよいのですが。

お名前:
E-mail:
コメント:
本日のTrackBacks(全3件) [TrackBack URL: http://www.rubyist.net/~matz/tb.rb/20060120]

「オブジェクト指向神話」神話 http://www.rubyist.net/~matz/20060120.html#p01 「オブジェクト指向は万能ではない」という(当たり前の)事が言われて久しいですが、いまだに「オブジェクト指向は万能ではない」→「オブジェクト指向否定」という議論が通ってしまうこと..

「オブジェクト指向神話」神話 Matzにっき(2006-01-20) あえて私見...

http://www.rubyist.net/~matz/20060120.html#p01 マッチポンプと言う奴ですな. 最初に「オブジェクト指向とはモデリングだ!モデリングを極めることがオブジェクト指向を極めることだ!」((これが,捏造された『オブジェクト指向神話』.))と言っておいて,あとから「オ..

本日のリンク元
アンテナ
検索

RSS feed meter for http://www.rubyist.net/~matz/ Creative Commons License This work is licensed under a Creative Commons License.