Hacker News Comments on
The Art of the Metaobject Protocol
·
6
HN comments
- This course is unranked · view top recommended courses
Hacker News Stories and Comments
All the comments and stories posted to Hacker News that reference this book.Kiczales and Bobrow are also the author of this book https://www.amazon.com/-/de/dp/0262610744 which has more details.
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...).
> 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-htc1xProbably 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).
⬐ jimhefferon> The art of the MOPPlease, what does that mean? I program in Racket, and have enjoyed the vidoes but googling this phrase suggests either Prof Kiczales likes to clean floors in an innovative way, or else he is a member of Hip-Hop group. I'm not finding either terribly credible.
⬐ AareyBabaThe Art of the Metaobject Protocol https://www.amazon.com/Art-Metaobject-Protocol-Gregor-Kiczal...⬐ sea6earHe is the author of the book The Art of the Metaobject Protocol⬐ dreamcompilerThe MOP is the Meta Object Protocol, which is the meta-language for controlling how CLOS operates internally. How exactly are classes, inheritance, instances, slots, method dispatch, method combination, etc implemented? In most object-oriented languages, you have very little insight into these issues and certainly no control over them. In CLOS you have both, thanks to the MOP. Just one more reason why CLOS is the most powerful OO system ever devised.
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...
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.
⬐ draegtun> The Common Lisp Object System (CLOS) also uses meta classesAnd so does Moose which sits on top of Class::MOP - https://metacpan.org/module/Class::MOP
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:
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.add_aspect(&foo, 'Some Aspect Identifier');
⬐ metageek>Also, inheritance is not a core requirement of OOP.The definition I learned was that, if you don't have inheritance, it's object-based. Of course, that was almost 20 years ago; usage might have shifted. I think the example I was given of an object-based language was Ada.