「いまさらながらだけど、オブジェクトとクラスの関係を究めてみようよ」には、いろいろとフィードバックがありまして、僕もそれらに触発されたところもあるので、お応えしたい気もするのですが、なかなかにねー、、、エネルギーが足りないや。
とりあえず、明白に質問(疑問文)の形をしたものに答えます。
今日お話に出ていたCommonLisp(?)のすごいコードのお話ってどの辺に書かれていますでしょうか?
- レイフィケーションとパワータイプって同じような概念ととらえてよいのかな?
- 檜山さんのエントリで、is-created-by とレイフィケーションは、他の関係と矢印の向きが逆な気がするんですけど、何か意図があるのでしょうか?
id:higeponさんの質問は、当該エントリーとは別な文脈でのものですが、一連の流れとしては関連するので。
もし、「いまさらながらだけど、オブジェクトとクラスの関係を究めてみようよ」の続編を書くとしたら(書かないけどね)、MetaObject Protocol(MOP)とかMeta-Circular Interpreterの話かなぁー、とか漠然と思って、なにげに調べてみればCLOS(Common Lisp Object System; クロス、シーロス)なんてもんが引っかかるわけです。
で、こっからは調べた結果とかではなくて、僕の曖昧な記憶(追憶)なんですが、
- そういえば、CLOSのプロトタイプ、あるいは前身となるシステムがあったよな。
- それはゼロックスから配られていたと思う。
- そのコードが「すげー」という話を知り合いから聞いた。
Common LispもCLOSも、1980年代にだいたいの形はできていたので、今から20年も昔のことです。その話をhigeponさんと雑談したのですが、
- 今はAspectJの主謀者であるキクザレス(Gregor Kiczales)が中心人物の一人だったような、、、
てなことも話しました。
それで、そのゼロックスが配っていた「すげーコード」とはなにか? なにしろ大昔の間接伝聞なので、事情がハッキリしませんが、もろもろの状況から推理推論するに、Portable CommonLoops じゃないかと思います。
当時(1980年代)僕は、締め切り/納期の世界で地べたをはいつくばってゲロ吐いていたので、MOPもMeta-Circularもありゃしなかったのですが、ゼロックスの「すげーコード」は、
- 高速で、
- 移植性が高く、
- 柔軟
とか聞いて、「それ食えるなら、一回食ってみたいもんだ」とかあこがれていたんですわ。
- レイフィケーションとパワータイプって同じような概念ととらえてよいのかな?
パワータイプって知らないです。今しがた見た、通りいっぺんの定義を信用するなら、「サブタイプ(クラスならサブクラス)全体からなるタイプ」ですよね。概念としてレイフィケーションとは全然違いますが、無関係ではありません。
一般のタイプではなくて、オブジェクトとクラスの例で話すなら、PがクラスCのパワータイプ(パワークラス?)になっているとは、
- X is-subclass-of C ならば、X is-instance-of P
- X is-instance-of P ならば、X is-subclass-of C
が成立することです(たぶん)。
CやX(いろんなXがある)が、クラスプレーン上に乗っているとすると、Pはそれらのクラス達と is-instance-ofという“垂直方向”の関係で結ばれるので、一階上のフロアであるメタクラスプレーンにいるはずです。つまり、クラスのパワータイプはメタクラスです。
パワータイプPをレイフィイすれば、クラスプレーンに落ちて、is-subclass-ofもis-instance-ofも同じプレーン内の“水平方向”の関係となるので、2次元内に図示できるはずです(図示はお任せします :-))。2次元内に、is-subclass-ofとis-instance-ofを同じ矢印で描いたりすると、CとP(のレイフィケーション・イメージ)は区別しにくい絵になるでしょうね。
- 檜山さんのエントリで、is-created-by とレイフィケーションは、他の関係と矢印の向きが逆な気がするんですけど、何か意図があるのでしょうか?
is-subclass-ofとかis-instance-ofは、二者のあいだの関係/関連性(relationship)なんだけど、is-created-byとreificationは、なんらかのアクションを絵に描いた感じ。
生成(is-created-by)の矢印では、クラスをニワトリ、オブジェクトを卵だと思ってください。波線の矢印は、卵が生まれ落ちてコロンコロン転がるところを描いたわけね。
レイフィケーションは、メタな世界=天上界の存在が、地上に落ちていくさまを描いたんですね。天使が天上界からピューッと地上に落ちて(堕ちて)くるところ、とかね。(すると、クラスオブジェクトは堕天使か?)
まー、雰囲気/感じの問題で、さほどの意味はありません。