views:

809

answers:

7

I remember that in the late 1990s and early 2000s Aspect Oriented Programming (AOP) was supposed to be the "Next Big Thing". Nowadays I see some AOP still around, but it seems to have faded into the background.

+4  A: 

That tends to happen with every "next big thing." Lots of hype, followed by a slow decline in the use of the buzzword. But, even though buzzwords fade and eventually disappear, whatever good ideas were behind them tend to stick around to be absorbed into the mainstream.

[Edit] Okay, an example for those who think I'm "bashing" something, or claiming that aspect oriented programming is going to disappear. At one time the next big thing was structured programming. Object oriented programming grew out of that, and now nobody talks about doing "structured programming" any more. But, in many ways we're still using its best ideas, because OOP adopted them, improved them, and added still more new ideas.

Sherm Pendley
I want to agree with you, but sometimes the next big thing does tend to stick around. Otherwise, we wouldn't have Object Oriented programming.
Jason Baker
OOP? Wasn't that big back in the early-'90s? I'm pretty sure i recall an article or two on it in "Byte"...
Shog9
@Jason: he's right OOP was supposed to be the next big thing in the 70's when Smaltalk came out, it only got mainstream with C++, and what C++ keep from Smaltalk was just a subset of features.
Pop Catalin
@Jason - We have OOP because structured programming was once the next big thing, and much of it stuck around. Buzzwords come and go, but the good parts of the "thing" behind them tend to stick around.
Sherm Pendley
@Pop CatalinOOP was actually coined with Simula and NOT SmallTalk...! ;)This was in 1969. I know because this is *the* most famous (some would claim only) thing my country (Norway) have added to the IT evolution...Bjarne even gives them credits in his book BTW...
Thomas Hansen
+2  A: 

I'm going to suggest that it wasn't big enough. It sounds very appealing, but does it really make coding any easier? I've been wanting to try it out and find what benefits it really holds, but I don't think I do enough coding where I need the relationships that it provides. I don't think it is as beneficial as it sounds.

Also at this point, making it easier to do multicore programming easier is a big thing and I don't think aspect-oriented programming will assist with that.

You can also find lots of content on Adoption Risks.

he_the_great
+4  A: 

It's around on some projects, my own experience on a recent project is that is too easy to abuse :( !!! What started a a nice way to setup debug, timing and to some extend transaction management, it quickly got corrupted to the weirdest, and hardest code to understand and debug that I've seen in a while.

just to expand a bit on the debug/diagnostic side, the stack traces generated by AOP code many times hide beyond recognition the actual place where the exception took place.

webclimber
+2  A: 

AOP is actually truly brilliant, the problem with it is that no existing language has really great support for it. Sure C# has attributes (which only works when you're CODING the thing) and Java has "injection" (which creates a mess out of the runtime) but in general there are no (mainstream) languages which have truly great support for it...

So it kind of like ended up being a "Design Pattern" (with insanely different implementations in all the different languages though) which after all isn't all that bad I guess ;)

Thomas Hansen
+2  A: 

Aspect Oriented Programming isn't used all that much because Jon Skeet doesn't practice it.

FlySwat
jon skeet is the only aspect of programming that matters
Steven A. Lowe
who the hell is jon skeet?
hasen j
@hasen - I'm wondering that myself, and waiting for the epic Jon Skeet vs. Chuck Norris showdown.
Sherm Pendley
@Steven - OMG that's genius!
annakata
+15  A: 

There has maybe been a lot of hype in the early 2000's, and what happened is the following: there has been a lot of attempts to create aspect-oriented frameworks, and these attempts have merged into two significant projects in the Java sphere: AspectJ and Spring AOP. AspectJ is complete, complex, academic, somewhat overengineered. Spring AOP covers 80% of use cases with 20% of complexity.

If you look at Google Trends for terms "AspectJ, Spring AOP", then compare to the popularity of Java itself, you will see that the relative popularity of AspectJ is somewhat constant, but Spring AOP is raising. That means that people use AOP, but don't want the complexity of AspectJ. I think that the creators of AspectJ made a lot of tactical mistakes; AspectJ has always been a research project and has not been designed "for the masses".

In the .NET sphere, we have seen a similar interest for AOP in the early 2000's. In 2003, when I started AOP researches, there were half a dozen of AOP weavers for .NET; all were following the path of AspectJ, and all were in infant stage. None of these projects survived. Based on this analysis, I built PostSharp, who was designed to cover 80% of use cases with 20% of complexity, and yet was much more convenient to use than Spring AOP. PostSharp is now considered the leading aspect weaver for .NET. PostSharp 2.0 builds on 5 years of feedback and from industry experience of AspectJ and brings "enterprise-ready" AOP (future will judge if this claim is deserved). Besides PostSharp, other significant players are Spring Framework for .NET and Windsor Castle, two DI-centric application frameworks providing 'also' aspects (aspects are considered as dependencies injected into constructed objects). Since these technologies use runtime weaving, they have severe technical limitations, so practically they can be used only in service objects (that's what these application frameworks have been designed for). Another starting project in .NET is LinFu, which can do 'also' aspects.

To be short, the AOP landscape has undergone some consolidation last years, and probably enters the phase of productivity: customers will use it because it really saves money, not because it is cool. Even if it is very cool :).

Oh, and I forgot: most application servers have built-in support for AOP. Thinking of JBoss, WebSphere, and, to some extent, WCF.

Gael Fraiteur
+1 for PostSharp. One big healthcare provider uses it in their projects.
epitka
A: 

AOP is a new programming paradigm dealing with this concept. An aspect is a software entity implementing a specific non-functional part of the application.

I think this article is a good place to start with Aspect Oriented Programming: http://www.jaftalks.com/Home/Show/Aspect-Oriented-Programming-AOP

Jaftalks
Non-functional part of the application?!!! I am not sure that you are saying what you mean here.
Sam