Tuesday, November 01, 2005

I got my copy of the Art of the Meta-Object Protocol in the mail today! Already it's more well-written and accessible than I could possibly have imagined, and is so far answering several questions in fields I hadn't related to the MOP (like how classical object models can be integrated with the generic object models used in CLOS, and how the MOP relates to the "essential difficulty" of software production). Thinking over the essential difficulty of programming today and the most promising (though non-silver) bullets, I was trying to decide how Generators, Patterns, and metaprogramming are related to one another in the attack on the essence of difficulty in programming. I've been thinking a lot, especially about Paul Graham's assertion that "When I see patterns in my programs, I consider it a sign of trouble. The shape of a program should reflect only the problem it needs to solve. Any other regularity in the code is a sign, to me at least, that I'm using abstractions that aren't powerful enough-- often that I'm generating by hand the expansions of some macro that I need to write." Perhaps more stewing on this idea is necessary before coming to a conclusion, but I'm tempted to agree, and also to point out Graham's use of Generators (in the form of macros) to help him accomplish some metaprogramming (someone who deserves an attribution but whose name I can't remember once said that metaprogramming is the art of engineering the language upward to meet it's intended use).


Post a Comment

<< Home