05/06/22 21:39:05
一応これも貼っとこう
>>25への反論
1.対象物の構造をそのまま、オブジェクト指向言語で完全に表現する事はできない。
オブジェクト指向では不完全な表現しか得られない事象の例:
多重継承、
時間的な状態変化、
etc.
一般的に、不充分な表現しか得られない事象の例:
非常に複雑な対象物/概念
計算不可能な対象物/概念、
記述不可能な対象物/概念
etc.
もしあらゆる事柄を表現し自動的にシミュレーションできる方法があるならば、
大半の科学者は仕事をする必要がなくなる。
(例:宇宙誕生をオブジェクト指向言語でそのまま表現可能なら、宇宙論は不要になる)
2. オブジェクト指向に限らず、モデリングとシミュレーション、そして科学の肝は、
対象物をそのまま記述するのではなく、
特徴を捉えて、扱いやすい簡易的な表現を得て、その表現を操作する事である。
要するに、抽象化と記号的処理こそが、知性の最も重要な働きなのである。
抽象化を行わないオブジェクト指向プログラミングがあるとすれば、
それはせいぜいコンピュータ上のソフトウェアの「移植」とか「エミュレーション」程度の仕事に過ぎない。
3. このような、対象物の構造と、ソフトウェア上の表現(ここではオブジェクト指向モデル/プログラム)
の間にある差異を、何らかの形で縮めて、実用上問題がないように取り繕う技術が、
モデリング/設計/プログラミングの中心的な作業であり、
そのためのノウハウや経験則は、ソフトウェア・パターンとかプログラミング・スタイルとかイディオムと呼ばれている。