オブジェクトという言葉が悪い、というのはもうずっと思っていることだ。
オブジェクトを訳せば「物体」である。物体はなにしろ物体じゃないか。モノなのにメソッドを持ってて命令を処理できたり、変身(ポリモーフ)したりするのは変だ。
そもそも「車オブジェクト」を継承して「バスオブジェクト」と「タクシーオブジェクト」を作ることはできない。だって、どうしたら同じ車がタクシーにもバスにもなるというのか。
そんなのは不可能なのだ。トランスフォーマーオブジェクトなら作れると思うけど。
そのあたりの感覚的な矛盾を無視して言葉を使うから、初心者はけっきょく丸憶えするしかなくなってしまう。けっきょくオブジェクト脳は育ちえないし、普通はサブルーチンを作る以上の発想につながらない。
というか、一つの車がタクシーにもバスにもなると感じられる「オブジェクト脳」なんてものをもった性格破綻者にしか理解できないのなら、やっぱり、それじゃダメじゃないか。
だが。
人間はもともと、タクシーが車を継承していると感じる能力を持っているのである。もちろんそれは物体としてではなくて、意識の中にしか存在しない概念としてというか……。
そこでわたしは提唱したい。これからは「クオリア指向」でどうだろう。
……うーん。わたしもダメだと思う。
[2007.08.28 13:28]あおき :
「クラス」と「インスタンス」という言葉のほうがてらしま君の感覚にはあいそうだなーと思った。でなければ、「タイプ」とか?
あと実装レベルだと、抽象データ型+継承=OOというのもわかりやすそう。
[2007.08.28 16:20]中田 :
そもそも「オブジェクト」に型があるものとしている時点で、いくらかクラス指向に毒されてるわけで。
型なんか存在しなくても「オブジェクト」は「オブジェクト」なのにね。そういう意味ではとりあえずなんでもリストでとりあえず入ってきたものを評価すればOKなLispとかこそ真のオブジェクト指向言語なのかも、とかなんとか。
[2007.08.29 20:38]拓真 :
物体ではない、概念的なものをオブジェクト(物体)としてコーディングしようとするとどこに境界線を引けばいいのかちんぷんかんぷん^^;
[2007.08.29 23:03]てらしま :
たとえばDiceという物体が、はたしてほんとにroll()メソッドを持ってるのかみたいな。まあ実際のところは「あまり深く考えなければ持ってる」あたりですかねー(笑)
[2007.08.30 02:57]中田 :
真に「なんでもオブジェクト」な世界なら、そもそもroll()だってオブジェクトじゃなきゃいけないはずで、roll()とdiceの関係はroll()がdiceを引数に取りうる、というものになるはずだー、とかなんとか。
[2007.08.31 02:49]あおき :
中田さんはlisp脳だなあ。rubyは結構オブジェクトをいじっている気持ちが強いですね。