''The Art of the Metaobject Protocol'' (AMOP) is a 1991
book
A book is a structured presentation of recorded information, primarily verbal and graphical, through a medium. Originally physical, electronic books and audiobooks are now existent. Physical books are objects that contain printed material, ...
by
Gregor Kiczales
Gregor Kiczales is an American Canadians, American Canadian computer scientist. He is currently a professor of computer science at the University of British Columbia in Vancouver, British Columbia, Canada. He is best known for developing the conce ...
,
Jim des Rivieres, and
Daniel G. Bobrow (all three working for
Xerox PARC
Future Concepts division (formerly Palo Alto Research Center, PARC and Xerox PARC) is a research and development company in Palo Alto, California. It was founded in 1969 by Jacob E. "Jack" Goldman, chief scientist of Xerox Corporation, as a div ...
) on the subject of
metaobject protocol
In computer science, a metaobject is an object that manipulates, creates, describes, or implements objects (including itself). The object that the metaobject pertains to is called the base object. Some information that a metaobject might define inc ...
.
Overview
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
Common Lisp (CL) is a dialect of the Lisp programming language, published in American National Standards Institute (ANSI) standard document ''ANSI INCITS 226-1994 (S2018)'' (formerly ''X3.226-1994 (R1999)''). The Common Lisp HyperSpec, a hyperli ...
implementations as an extension of the
Common Lisp Object System
The Common Lisp Object System (CLOS) is the facility for object-oriented programming in American National Standards Institute, ANSI Common Lisp. CLOS is a powerful dynamic programming language, dynamic object system which differs radically from t ...
, or CLOS.
[''The Art of the Metaobject Protocol'', Chapters 5 and 6 in Hypertext](_blank)
/ref> 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.
/ref>
The book presents a simplified CLOS
Clos may refer to:
People
* Clos (surname)
Other uses
* CLOS, Command line-of-sight, a method of guiding a missile to its intended target
* Clos network, a kind of multistage switching network
* Clos (vineyard), a walled vineyard; used in Fra ...
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
In computer programming, a type system is a logical system comprising a set of rules that assigns a property called a ''type'' (for example, integer, floating point, string) to every '' term'' (a word, phrase, or other set of symbols). Usu ...
. 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 meta-circular evaluator In computing, a meta-circular evaluator (MCE) or meta-circular interpreter (MCI) is an interpreter which defines each feature of the interpreted language using a similar facility of the interpreter's host language. For example, interpreting a lambda ...
.[''The Art of the Metaobject Protocol'', Chapter 1: How CLOS is Implemented — 1.1 A Subset of CLOS]
In his 1997 talk at OOPSLA
OOPSLA (Object-Oriented Programming, Systems, Languages & Applications) is an annual ACM research conference. OOPSLA mainly takes place in the United States, while the sister conference of OOPSLA, ECOOP, is typically held in Europe. It is oper ...
, Alan Kay
Alan Curtis Kay (born May 17, 1940) published by the Association for Computing Machinery 2012 is an American computer scientist who pioneered work on object-oriented programming and windowing graphical user interface (GUI) design. At Xerox ...
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
OOP, Oop, or oop may refer to:
Science and technology
* Object-oriented positioning, another name for feature-oriented positioning in microscopy
* Object-oriented programming, a computer programming paradigm.
* Order of operations, in mathemat ...
", 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
Lisp (historically LISP, an abbreviation of "list processing") is a family of programming languages with a long history and a distinctive, fully parenthesized Polish notation#Explanation, prefix notation.
Originally specified in the late 1950s, ...
culture, it's very hard to read".[Keynote at OOPSLA 1997, ''The Computer Revolution hasn't happened yet.'' Alan Kay, October 199]
/ref>
References
{{DEFAULTSORT:Art of the Metaobject Protocol
Computer books
Lisp (programming language)
Object (computer science)