The Art of the Metaobject Protocol

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search
The Art of the Metaobject Protocol
The Art of the Metaobject Protocol cover.jpg
Author Gregor Kiczales
Jim des Rivieres
Daniel G. Bobrow
Publisher MIT Press
Publication date
July 30, 1991
Pages 345
ISBN 0-262-61074-4

The Art of the Metaobject Protocol (AMOP) is a 1991 book by Gregor Kiczales, Jim des Rivieres, and Daniel G. Bobrow (all three working for Xerox PARC) on the subject of metaobject protocol.


The book contains an explanation of what a metaobject protocol is, why it is desirable, and the de facto standard for the metaobject protocol supported by many Common Lisp implementations as an extension of the Common Lisp Object System, or CLOS.[1] A more complete and portable implementation of CLOS and the metaobject protocol, as defined in this book, was provided by Xerox PARC as Portable Common Loops.[2]

The book presents a simplified CLOS implementation for Common Lisp called "Closette", which for the sake of pedagogical brevity does not include some of the more complex or exotic CLOS features such as forward-referencing of superclasses, full class and method redefinitions, advanced user-defined method combinations, and complete integration of CLOS classes with Common Lisp's type system. It also lacks support for compilation and most error checking, since the purpose of Closette is not actual use, but simply to demonstrate the fundamental power and expressive flexibility of metaobject protocols as an application of the principles of the metacircular evaluator.[3]

In his 1997 talk at OOPSLA, Alan Kay called it "the best book anybody's written in ten years", and contended that it contained "some of the most profound insights, and the most practical insights about OOP", but was dismayed that it was written in a highly Lisp-centric and CLOS-specific fashion, calling it "a hard book for most people to read; if you don't know the Lisp culture, it's very hard to read".[4][5]


  1. ^ The Art of the Metaobject Protocol, Chapters 5 and 6 in Hypertext
  2. ^ PCL: Portable implementation of CLOS
  3. ^ The Art of the Metaobject Protocol, Chapter 1: How CLOS is Implemented — 1.1 A Subset of CLOS
  4. ^ Keynote at OOPSLA 1997, The Computer Revolution hasn't happened yet. Alan Kay, October 1997 [1]
  5. ^ Guzdial, Mark (January 30, 1998). "Report on OOPSLA97". Georgia Institute of Technology. Retrieved 2011-04-21.