Posts

Showing posts from February, 2018

The Art of the Metaobject Protocol を讀む

The Art of the Metaobject Protocol を讀む はじめに The Art of MetaObject Protocol といふ本があります。略してAMOPなどと呼ばれることもありますが、西暦1991年に出版されてから、かれこれ30年近く經て、今尚、コンピュータ科學分野上、樣樣な示唆に富んだ良書だとされてゐます。 本書のIntroductionには讀者對象として、 Programming Language Designers , Programmers and software engineers , People working with object-oriented languages , People interested in reflection , The CLOS Community 等が擧げられてをりますが、これを見ても、II部を除けば 1 140頁にも滿たないこの書が、如何に中身の濃いものであるかは容易に想像できます。 それだけに、なかなか取っ付き難い本でもあって、無目的に讀み始めると、大抵は Chapter 1 の、それも最初の方で返り討ちにされたまま、ツンドクといったことになりかねません。しかし、逆に云ふと、 Chapter 1 それも、 1.3 Representing Class あたりまで讀み進めることができれば、後は、さう苦勞なく讀了まで持っていけるものです。 といふわけで、本稿では、以下、 The Art of MetaObject Protocol の第一章 1.3 迄を解説しながら讀んで行かうと思ひます。 Table of Contents 1. CLOSの實裝 1.1. 實裝しようとするサブセットの定義 1.2. 裏舞臺の基礎構造 1.3. クラスの構造を定義する 1.3.1. defclassマクロ定義 1.3.2. 親クラスの正規化 1.3.3. スロットの正規化 1.3.4. Class Options 1.3.5. ensure-class 1.3.6. Class Metaobjects の初期化 1.3.7. 繼承 1 CLOSの實裝 Metaobject

CLOS Grand Tour

Table of Contents 1. はじめに 2. クラス 2.1. クラスの定義 2.2. クラス定義の例 2.3. インスタンス生成 3. 繼承 3.1. クラス優先順位 3.2. スロットの繼承 4. 總稱函數とメソッド 4.1. 總稱函數とメソッドの定義 4.2. メソッド選擇 4.3. メソッド結合 4.4. 標準メソッド結合 4.5. 標準メソッド結合の例 4.6. 他のメソッド結合 5. オブジェクトの生成とその初期化 5.1. インスタンス生成 5.2. 初期化引數 5.3. オブジェクトの生成とその初期化をカスタマイズする 6. クラス再定義 7. 結論 1 はじめに Common Lisp Object System (CLOS) は、當初 Common Lisp の擴張仕樣 として提案され、其の後 ANSI Standard に組み入れられました。 CLOSは他のオブジェクト指向言語と同じやうに、クラス、總稱函數、メソッド、多重繼承の概念に基いたものですが、CLOSを他と際立たせてゐるものは、これら、クラス、メソッド、總稱函數、メソッド結合など全てが、そのインスタンスと同樣に、 first-class object として、programmer が參照操作できる點にあります。 しかし、ではこのことが日日の我が身にとってどんな御利益があるのか、については、あまり明確なイメージを持てないでゐる人も少なくないのではないでせうか。 Linda G.DeMichiel による An Introduction to CLOS では、上を簡潔に、且要點を外すことなく解説くれてゐるのですが、生憎この論文が掲載されてゐる本 Object Oriented Programming the CLOS Perspective は今ではなかなか入手が難しいやうです。 ここでは、 An Introduction to CLOS に沿って、CLOSを概觀しつつ、より具體的なイメージが持てるやうCLOSの舞臺裏をも覗いてみようと思ひます。舞臺裏を覗く道具としては主に Meta Object Protocol (MOP)