From: Michael Slater Date: 2003-09-01T01:21:48+09:00 Subject: Re: Aspect oriented Everything? > From: Robert Will [mailto:robert.will@stud.tu-ilmenau.de] > > The most important use cases that i've seen so far are: > > > > - Logging facilities > > - Debugging code > > - Pre/Postconditions > > - Threading synchronization > > > > 1+2+3 can be embedded in a language. This is already done in Eiffel. > > I don't know if i really want to see something as difficult as > > "threading synchronization" as an aspect. > > I see, you watched the trend the closely. Incidentally I have the > same opinion, except that I don't consider their dysfunctional > examples as proof of concepts. It seems to me that AOP came into being shortly after Java got popular. And the big reason, at least for three of the above four "important use cases", is that Java has no macro preprocessor nor does it have templates. In C and C++, you get logging, debugging, pre/post conditions, instrumented code, and a variety of other useful capabilities all via the macro preprocessor and/or templates. So with Java, obviously something had to be done to make up for functionality that was lost vs. C/C++. Thus we have AOP. I could see AOP being useful in providing an easy mechanism for creating and utilizing arbitrary join points, something that is potentially useful in any language. All this said, I think there's more to AOP that has been discussed so far. The only interesting effort that I know of that is using it happens to be Charles Simonyi's company, Intentional Software. And at least they have a short concise definition of AOP :-) Aspect-Oriented Programming (AOP) A technique that enables concerns that cut across a software system to be programmed in clear, modular units. This enables the design intent of such crosscutting concerns to be clear in the source code. In object-oriented programs like Java, the natural unit of modularity is the class. In AspectJ, aspects modularize concerns that affect more than one class. (From www.aspectJ.org) http://intentsoft.com/ --ms