The Art of the Metaobject Protocol
Gregor Kiczales, Jim Des Rivières, Daniel Gureasko Bobrow
The CLOS metaobject protocol is an elegant, high-performance extension to theCommonLisp Object System. The authors, who developed the metaobject protocol and who were among thegroup that developed CLOS, introduce this new approach to programming language design, describe itsevolution and design principles, and present a formal specification of a metaobject protocol forCLOS.Kiczales, des Rivières, and Bobrow show that the "art of metaobject protocol design" lies increating a synthetic combination of object-oriented and reflective techniques that can be appliedunder existing software engineering considerations to yield a new approach to programming languagedesign that meets a broad set of design criteria.One of the major benefits of including themetaobject protocol in programming languages is that it allows users to adjust the language tobetter suit their needs. Metaobject protocols also disprove the adage that adding more flexibilityto a programming language reduces its performance. In presenting the principles of metaobjectprotocols, the authors work with actual code for a simplified implementation of CLOS and itsmetaobject protocol, providing an opportunity for the reader to gain hands-on experience with thedesign process. They also include a number of exercises that address important concerns and openissues.Gregor Kiczales and Jim des Rivières, are Members of the Research Staff, and Daniel Bobrow isa Research Fellow, in the System Sciences Laboratory at Xerox Palo Alto Research Center.