2022年11月20日 (日)
2022年7月21日 (木)
→メタクラス: クラスベース継承において、(インスタンスとしての)クラスもまたオブジェクトとして扱おうとした時、クラスの属するクラス(=メタクラス)が仮定されます。 では、メタクラスの属するクラスは?・・・メタクラス自身もメタクラスのインスタンスです。 ここで「有向無サイクルグラフ」の仮定が壊れます。 メタクラスの位置づけは言語によって様々で、初期のSmalltalk(Smalltalk-76)では、Classという単一のクラスがメタクラスでしたが、Smalltalk(Smalltalk-80)では、すべてのクラスに独自のメタクラスがあり、それぞれのメタクラスは単一のMetaclass classのインスタンスです(メタのメタのメタ…の無限の連鎖は避けている)。少し想像すると判るように、メタクラスの操作は概念上のシフトが必要で、微妙で煩雑なものとなりがちです(パラドクスと言ってもいい)。 このような複雑さを解決するために、「クラスなんてなかった、インスタンスはインスタンスの複製によって生成して、複製を新たに修飾し目的を達成する」というアプローチが生まれました。
+4,885
→動的ディスパッチ/メッセージパッシング: 推敲
−21
→包含、継承、および委譲: 定義リストを(リンク可能なように)節に分割。
+981
→クラスベースとプロトタイプベース: ln
−1,144
語尾の統一
+54