Entry

クラス-オブジェクトとイデア論の話で思い出したことがあった

2008年01月20日

クラス-オブジェクトとプラトンのイデア論ってのは相性がいい……というか,多分向こうの人にはそういう発想がもともとあるんだと思うんですけれど,それで思い出したことがあったのでメモ。オブジェクト指向とイデア論の話そのものについては,「@IT:オブジェクト指向の世界(10)」あたりを参照してください。

高校生の頃,倫理(哲学・思想)の時間でイデア論がお題になったことがあって,先生から「この考え方に思うところはねいかい?」みたいな質問をもらったのでした。あたしはというと,「思うところ」も何も,授業そのものをちゃんと聞いていなかったので,ややパニック。なにせ,電線にとまってる雀の数を数えるくらいのどかな(というか暇な)授業だったもんでしたから……。まぁ,先生は,その様子を見てあたしに質問したんでしょうけど。

で,ともかく,何か答えなくちゃいけないってなことで,こんな風なことを言ってみたのでした。

三角形のイデアとか椅子のイデアとか善のイデアとかがあるんだったら,イデアのイデアってのもありそうですよねー。

先生には,40%くらいの苦笑と60%くらいのとまどいが見られました。同級生は,70%くらいの苦笑……だったっけかな。

「イデアのイデア」という話は,クラス-オブジェクトの話にしてみると,「クラスのクラス」といったところになりそうです。プラトンのイデア論にうまくあてはまるかは措いておくとして,プログラミング言語では,こういうもんを普通に観念できますよね。例えば,Ruby なんかでは「クラスもオブジェクト」と言っているけれど,これは,クラスオブジェクトに対応する「型」を前提にしているはずです。つまり,クラスのオブジェクトが言語仕様にあって,オブジェクト一般の実装仕様があるとするなら,(クラスオブジェクトを含む)オブジェクト一般にまつわる「型」があるはずだ,ということです。

んでもって,おそらく,こうしたメタプログラミング的な発想なるもんは,際限なく続いていくんだと思います。少し人文系の話に引き付けるなら,「メタプログラミング」と直接名指しできる「型」なるもんは,存在しない,と。なぜなら,ある X (例えばクラス)をオブジェクトに対する「型」として規定する場合,X を名指した瞬間に X の仕様が具体化されてしまうからです。この具体化が,メモリ上のオブジェクトとして実現されるのか,言語の実装仕様として紙の上に表現されるのかは,場合によります。けれど,いずれにせよ,そうした「型」に対する実体ってのは,一枚のコインを表から見るか裏から見るか,くらいの違いしかないと思うわけです。

つまるところ,ある「型」が型だけでもってそこにある,なんて事態は考えられないわけで,その意味で言うとある仕様なり実装なりをメタプログラミングと名指したとしても,それと同時にそれは何かのサブプログラミングになっているはずだ……と,云々。

そうしてみると,少し話をずらして,クラスを前提にしたモデリングやデザインパターンの類を考えてみても,ある意味クラス概念に対するメタプログラミングだと思うわけで(メタプログラミングという言葉は「○○に対する……」という形でしか使えないと思う),単純に論理設計云々の一語で済ませられるようなもんでもないんじゃないか,と思ったりします。『アナリシスパターン』が分かりづらいのは,モデリングすることが難しいというよりは,モデリングそのもののメタプログラミング的な側面が難しいんじゃないか,とも。

アナリシスパターン―再利用可能なオブジェクトモデル (Object Technology Series)
マーチン ファウラー Martin Fowler 堀内 一 友野 晶夫 児玉 公信 大脇 文雄
ピアソンエデュケーション (2002/04)
売り上げランキング: 16790
おすすめ度の平均: 5.0
5 ビジネスモデリングで必須
5 モデリングについてのイマジネーションをかきたてる良書
5 よい本ですね

……と,つらつら考えてみると,高校生当時のあたしゃ,あながち間違えたことを言ってなかった気がします。まぐれ当たり。そして自己満足。

Trackback
Trackback URL:
[2009年08月11日 22:19] Stay Hungry, Stay Foolish  イデア オブジェクト指向 プラトン from Stay Hungry, Stay Foolish
Stay Hungry, Stay Foolish  イデア オブジェクト指向 プラトン http://itandenglish.blog63.fc2.com/b... [more]
Ads
About
Search This Site
Ads
Categories
Recent Entries
Log Archive
Syndicate This Site
Info.
クリエイティブ・コモンズ・ライセンス
Movable Type 3.36
Valid XHTML 1.1!
Valid CSS!
ブログタイムズ

© 2003-2012 AIAN