The Art of the Metaobject Protocol

Book cover: The Art of the Metaobject Protocol

Kiczales, des Rivieres, Bobrow: The Art of the Metaobject Protocol (AMOP)

I have been reading AMOP for the past few days, and found it quite enlightening, even from a general object-oriented viewpoint. Now I am inclined to buy some extra copies and have them delivered to some AOP folks in the neighborhood (you know who you are! ;)).

Well, that, or I will try to understand why Gregor took off the AOP tangent, instead of continuing to evolve reflective capabilities of languages through defined protocols.

From my perspective, formal protocol design would have been the way to go, at least I would expect it to make my life not harder. With random code insertions at random places, AOP might scratch an immediate software engineering itch, but in the long run it will also be verification hell. Oh joy...

Almost 15 years ago, Barry Margolin wrote a review on AMOP, with which I quite agree:

Part I is the part that should be of most interest to OO programmers in general, as tour through the OO design process. In effect, the reader is watching over the shoulder of an expert OO designer in action. I don't know about most of you, but I learned most of what I know about good programming by sitting next to colleagues while they worked, or by making later modifications to their programs; there's no substitute to looking at good code, and having the programmer explain *why* it is written the way it is. This book does this.

And further on:

The description is good, but the extensive use of prose underscores a missing facet of most OO languages, including CLOS: formal protocol specifications. [...]
Maybe now that the CLOS designers have polished CLOS and reached a milestone in the MOP design, the next step should be a language for formally defining protocols.

Finally, it has a beautiful cover.

Funny aside, quoting Irina:

It should be forbidden that such [computer-related] books have such beautiful covers. It's misleading!
comments powered by Disqus