2012-04-29

オブジェクト指向とイデア論

HTML→CSS→JavaScript(挫折)→CGI(Perl)→PHP,VB ... と、
元はホームページ作りたかったので、そこから色々つまみ食いしては忘れ、
忘れた頃になにかプログラム組みたくなったりして現在に至るわけですが、
とりわけJavaScriptには苦い思い出があります。

当時はIE6、ネットスケープとかだったのでステータスバーに文字を流すとかやってた牧歌的な時代です。
JavaScript本を一冊買ったもののメソッドだのプロパティだの意味が分からない。
今にして思えば、JavaScript自体のオブジェクト、ブラウザのオブジェクト、 DOM なんかがごっちゃになってたんだなと。

全体は見通せないし、デバッグの仕方も分からないし、労力の割りに大したこと出来なくて投げたわけです。
ここでオブジェクト指向的なものに苦手意識が植え付けられます。

その後、CGI(Perl)を改造したりしてるとモジュールに出会う。
モジュールはオブジェクト指向で書かれてるらしいので苦手意識がありつつも調べてみる。
やっぱりここでも挫折するわけですが、すごく印象に残っているのがこの記事。

@IT:オブジェクト指向の世界(10) プラトン編-イデア論とクラス/インスタンス

読んだ当時はさっぱりでしたが、オブジェクト指向って哲学由来なんだなと。

そこで自分のプログラミングの入り口たる HTML と CSS に戻りますが、
文章と装飾の分離という考え方は 「本質」 と 「本質でないもの」 の分離で
哲学っぽいなと思っていたので、非常に印象深いわけです。


プラトンのイデア論

プラトンは「無知の知」で知られるソクラテスの弟子。
ソクラテスは倫理を追求した人なので、プラトンもかなりその影響を受けてます。
そのせいなのかプラトンは理想主義的な印象。

イデア論とは、端的に言えばこういうことです。
ものには イデア(idea) という真の原型が存在する。
この世にあるものは イデア のコピーに過ぎない。

この考え方がオブジェクト指向に似てるわけです。

イデア - クラス
イデアのコピー - インスタンス(オブジェクト)

似てるというよりそのまんまですね。


抽象と具体

一度クラスを使ったプログラムを作ってみれば、その後は理解が進むものです。
一方で、humanクラスからbaker、animalクラスからdogを作るみたいな例は なんで分かりづらいのか。

それは、クラスが抽象化されたものだから、じゃないかと。

抽象化というのは、対象の特徴、要素を抜き出すことです。
抽象化されたクラスを説明するのにクラスから入ると、 具体的なもの(オブジェクト)がイメージしにくい。

むしろ、複数のオブジェクトからクラスを作った方が、 抽象化のプロセスから考えても分かりやすいのでは。


プラトンの弟子のアリストテレスもイデア論はしっくりこなかったようです。
「実体が先にあって、それらを基にして人間が頭の中で抽象化して創りだしたものを
イデアと呼んでいるにすぎないというのが自然な考え方である」
アリストテレスは帰納的アプローチが好きなので
実体がなく検証しようがないイデアという概念は納得いかないのでしょう。

アリストテレスも、オブジェクトからクラスの方が分かりやすいタイプだと思いませんか。


PCは叡智の結晶

ハイテクの塊であるPCに古代ギリシャの哲学が生きている。
それだけ過去の賢人は普遍的なもの、本質に迫っていたんだなと感じます。

PCを通じて人類の叡智に触れられるなんて、PCはオモチャとして最高。
いろんな概念に触れられるオモチャなんて他にはそうないんじゃないでしょうか。


参考リンク

@IT連載 「オブジェクト指向の世界」
オブジェクト指向と哲学
ギリシア哲学への招待状

1 件のコメント: