by Gregor Kiczales, Jim Des Rivieres, Daniel G. Bobrow
ISBN: 9780262610742
Buy on Amazon
Found in 4 comments on Hacker News
Rochus · 2021-11-13 · Original thread
Kiczales and Bobrow are also the author of this book https://www.amazon.com/-/de/dp/0262610744 which has more details.
JadeNB · 2019-07-11 · Original thread
> There also is a great introduction to programming online course with Racket by Gregor Kiczales https://www.edx.org/course/how-code-simple-data-ubcx-htc1x

Probably anyone who would be interested knows it without its needing to be pointed out, but I mention in case it entices anyone that Gregor Kiczales is one of the authors of "The Art of the Meta-Object Protocol" (https://www.amazon.com/Art-Metaobject-Protocol-Gregor-Kiczal... ; edited to remove abbreviation).

perlgeek · 2011-12-15 · Original thread
Yes, lots of OO research happened and happens in smalltalk. Which is why it has such a flexible object system, and which is why it is so well suited for OO research :-)

The Common Lisp Object System (CLOS) also uses meta classes; there's a book about it: "The Art of the Meta Object Protocol", http://www.amazon.com/Art-Metabobject-Protocol-Metaobject/dp...

Sadly it seems to be the only approachable resource on meta object systems, apart from a few research papers. If anybody has more literature reference, I'd be happy to learn about them.

Xurinos · 2010-12-10 · Original thread
His example is a little small to see how he would implement inheritance.

Also, inheritance is not a core requirement of OOP. Before you hit that downvote button, consider this: Inheritance allows your class to share attributes and behaviors with another class, and it allows code to recognize that instances of your class have those attributes and behaviors. In other words, when we say "is a", we really mean "does things that match the interface and meaning of". You can accomplish the same thing with "aspects" instead of "inheritance". Following 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.