
The art of the metaobject protocol
by Gregor Kiczales · first published 1991
92mentions
38recommended by
69HN commenters
2010–2026first – last mentioned
55% recommend45% neutral
Why HN recommends it
Walks step by step through building a Common Lisp object system (CLOS) and its extension points, showing how to design dynamic yet efficient OO. Suits language designers and Lisp programmers past CLOS basics.
Summarised by Claude from recommending comments
Affiliate links. As an Amazon Associate I earn from qualifying purchases.








* Smalltalk Objects And Design by Chamond Liu * The Art of the Metaobject Protocol by Gregor Kiczales Don't let the second one fool you. Although it is a Lisp book, it presents OOP design principles applicable to any language. As the Amazon review says: "The Art of the Meta-Object…
on “ Ask HN: What are some good books for understanding OOP? ” ↗…that idea, it is simply a matter of introducing this simple API to add your behavior to an instance: add_aspect(&foo, 'Some Aspect Identifier'); And that's just the tip of the iceberg. Check out Art of the Metaobject Protocol (http://www.amazon.com/Art-Metaobject-Protocol-Gregor-Kiczale...) for some huge eye-openers.
on “Things to hate about OOP” ↗…a few times, just for the joy of it, which is the essence of quality literature. These are: Lisp In Small Pieces by Christian Queinnec. I believe this is the best programming book ever written. The Art of the Metaobject Protocol by Gregor Kiczales and Jim des Rivieres. This is mind-expanding. Let Over Lambda by Doug Hoyte. This is the very foundation of programming. Every time I re-read these books I find more understanding…
on “Pulitzer Prize for Programming Literature” ↗If you haven't had the chance to read "The Art of the Metaobject Protocol" [0], I highly recommend it. It deserves to be mentioned anytime something like OMeta is mentioned. [0] http://www.amazon.com/Art-Metaobject-Protocol-Gregor-Kiczale...
on “Not everything is an expression” ↗Absolutely seminal paper. In 1997 Alan Kay called the book by the same authors, The Art of the Metaobject Protocol: "the best book anybody's written in ten years." https://en.wikipedia.org/wiki/The_Art_of_the_Metaobject_Prot... I strongly feel that if you don't know MOP and CLOS, you shouldn't be allowed to call…
on “Metaobject protocols: Why we want them and what else they can do (1993) [pdf]” ↗The Art of the Metaobject Protocol https://mitpress.mit.edu/books/art-metaobject-protocol
on “Ask HN: What books had the greatest effect on how you structure your code?” ↗There's Lisp In Small Pieces by Christian Queinnec (https://www.amazon.co.uk/Lisp-Small-Pieces-Christian-Queinne...), and if you want to look into CLOS in depth, there's The Art of the Metaobject Protocol by Kiczales, des Rivieres, and Bobrow (https://www.amazon.co.uk/Art-Metaobject-Protocol-MIT-Press/d...). There's also a good older text, Anatomy of Lisp by John Allen (https://www.amazon.co.uk/Anatomy-LISP-McGraw-Hill-computer-s...).
on “Between two Lisps” ↗The Art of the Metaobject Protocol.
on “Ask HN: What are the most fundamental books on computer science?” ↗Lisp in Small Pieces The Art of the Metaobject Protocol
on “Ask HN: Which is the best programming book you have ever read?” ↗The myth is also bolstered by some of greatest book on the craft of programming ever written: * The Structure and Interpretation of Computer Programs * Paradigms of Artificial Intelligence * Art of the Metaobject Protocol * The Schemer Series (Little, Seasoned, Reasoned) * Essentials of Programming Languages * Lisp in Small Pieces Few programming languages have such an abundance of truly deep gems. One has to wonder…
on “The myth of the Lisp genius” ↗I'm not sure it should really count as a "Lisp book", but The Art of the Metaobject Protocol" is one of my favorite technical books ever. It takes some knocks for not really containing anything about how to use CLOS. Instead, it's how CLOS is built. At a higher level, it's "how to build an object-oriented…
on “Some Lisp books (2012)” ↗…the potential benefits of inheritance, roles, and other abstraction tools. It might be a good starting exercise in rolling your own dispatch tables, but you would probably get a lot more out of reading Art of the Metaobject Protocol and trying to implement a good class system (aka reimplement Moose).
on “Examples of using dispatch tables in perl” ↗…I think it was originally designed in a Lisp library called CLOS, which incidentally stands for Common Lisp Object System. Very nice explained on how to implement OOP in Lisp, in a book called "The Art of the Metaobject Protocol". Users of Lisp based languages should think twice before criticizing OOP.
on “The JVM is not that heavy” ↗…Some history, and challenges for the next fifty years" https://www.sciencedirect.com/science/article/pii/S089054011... Than read on BETA design for example, https://beta.cs.au.dk/ Follow up with "The Art of the Metaobject Protocol", https://mitpress.mit.edu/books/art-metaobject-protocol and "Xerox LOOPS" http://www.softwarepreservation.org/projects/LISP/interlisp_... Then "Component Software: Beyond Object-Oriented Programming"…
on “C++ the Good Parts (2014)” ↗Sticking with the Lisp family: LiSP (Lisp in Small Pieces), AMOP (The Art of the Metaobject Protocol). More general: TAOCP (The Art of Computer Programming). Edit: CLTL2: Common Lisp the Language CLRS: Introduction to Algorithms, referred to by the authors’ initials CSP: Communicating Sequential…
on “Paradigms of Artificial Intelligence Programming” ↗