« AJDT 1.1.11 Now Available | Main | A Tribute to Jim Hugunin »

July 22, 2004

Point and Counter-point

A week for the gurus to show their cards.... James Gosling comes out against AOP, and Grady Booch backs it.

Here's what James Gosling had to say:

AOP is kind of a complicated one for me, because AOP is one of these things where the theory sounds really good. I actually mostly like the theory. The way it turns out in practice tends to be pretty dangerous. It's fraught with all kinds of problems. You know when the AOP folks talk about AOP they list you like three or four use cases for AOP and they actually mostly make sense, although they have problems in the details. But there actually aren't very many use cases outside of that. And when you find people who are using AOP, the average ones that I've talked to have been using it for things that are just like incredibly inappropriate. It's like a really, really, really bad idea to be doing what they're doing. And so I feel very conflicted because on the one hand I basically like the concept, but I don't think that the research community has really figured out how to encapsulate those in a mechanism that really works for people. It's like giving them a chainsaw without any safety instructions.

Not quite the line he took in the AOP panel at JavaOne I'm told. Since James doesn't give us any specific examples of the things he believes people are doing with aspects that are a 'really, really bad idea' it's hard to make a counter-argument. My experience and the experience of many people I've talked to is that there are plenty of perfectly sound aspects out there that improve the modularity and clarity of programs. Clayton Christensen tells us that the leaders of one generation of technology often are the ones that have the hardest time adopting the next generation. Is that part of what's going on at Sun? Pure speculation on my part.

I'm sure that a number of readers must be concerned about my safety after reading James' comments. I have been programming with AspectJ this week despite the health warnings, but rest assured I've got my safety helmet and goggles on (TSS cartoon anyone?).

Meanwhile Grady Booch gave a keynote at the Rational User Conference (one of our team, George Harley, was there too demoing AJDT), in which he predicted that...

...many of the frameworks of the future will be built upon UML semantics, and that aspect-oriented programming will be mainstream.

This is something I personally am becoming increasingly convinced of (as if I needed any more convincing ;). My reasoning is simple: there's a fast-growing ground swell of interest in aspect-oriented programming, and of the people I know that have tried AOP, once they've seen how it works their perception of programming changes and they never want to go back again.

Bruce Tate and Justin Gehtland have this to say about AOP in their recent book "Better, Faster, Lighter Java":

"It's my belief that new programming models evolve much more slowly than predicted. I also believe that once they succeed, they have a much bigger impact than we expect."

AOP has been quietly growing for a long time - the term aspect-oriented programming came into existence at PARC sometime between 1995 and 1996. AspectJ celebrated its sixth birthday earlier this year. Me, I'm looking forward to that 'big impact' :).

Posted by adrian at July 22, 2004 07:47 PM [permalink]


It's amazing that when my advisor and I talk about software architecture and design, we always use AOP terms. It's useful even when you don't have the language or tool support.

I've had mixed feelings about Gosling's own take on programming languages: Java does a lot things wonderfully, but maybe it's just my Scheme bias that makes me think the best of it came from Guy Steele. I think the community realizes that required throws clauses were a mistake, and it's a shame the Java object model wasn't as clean or as advanced as Dylan's.

But I think Gosling has a point at least about general purpose AOP languages. I think domain-specific AOP languages (even if their weaving semantics are the same as AspectJ) hold a lot of promise and I see that as a worth direction to investigate: Most programmers I know these days have several languages in thier toolbox that they use for the job at hand. This is much different than when most programmers I knew had only C and assembly at their disposal. (Of course, I should say that as I study generative aspect-oriented programming further, I understand AspectJ more and see better and better uses as my experience grows.)

Posted by: Macneil Shonle at July 23, 2004 08:52 PM

Post a comment

Thanks for signing in, . Now you can comment. (sign out)

(If you haven't left a comment here before, you may need to be approved by the site owner before your comment will appear. Until then, it won't appear on the entry. Thanks for waiting.)

Remember me?