Aspect oriented programming

Aspect oriented programming

MSDN Magazine showed up at my door while I was away in the UK, and I finally got round to reading it today. First stop: Simon's article on Aspect-Oriented Programming . Nice article, Si. It's recommended reading for people working on legacy (i.e. COM) and undocumented (.NET Remoting Context Attributes) technologies. [ Peter Drayton's Radio Weblog ]

Extremely well-written piece. I'd recommend it even more broadly. From the moment I saw the declarative approach of MTS and then COM+, whereby transactions, object pooling, and security become externally-managed attributes of components, I knew this was a great idea. What I didn't know, until now, is where it came from. Simon and his coauthors pointed me to the seminal paper on aspect-oriented programming, and connected the dots for me between that paper and COM+ in both pre- and post-.NET environments.

Here's a little of the flavor of that original Xerox Parc paper:

In general, whenever two properties being programmed must compose differently and yet be coordinated, we say that they cross-cut each other. Because GP [generalized-procedure, including procedural, object, and functional] languages provide only one composition mechanism, the programmer must do the co-composition manually, leading to complexity and tangling in the code.

These terms -- "cross-cutting," "tangling" -- are wonderfully expressive.

Former URL: