Aspect-Oriented Programming

The term for a means of metaprogramming where a programming language is separated into a core language and various domain-specific languages which express (ideally) orthogonal aspects of program behavior. One of the main benefits of this means of expression is that the aspect programs for a given system are often applicable across a wide range of elements of the system, in a cross-cutting manner. That is, the aspects pervasively effect the way that the system must be implemented while not addressing any of the core domain concerns of the application.

One of the drawbacks to this approach, beyond those of basic metaprogramming, are that the aspect domains are often only statically choosable per language. However, the benefits are that separate specification is possible, and that these systems combine to form valid programs in the original (non-core) programming language after weave-time, the part of compilation where the aspect programs are combined with the core language program.

Pages in this topic: AspectC/C++   AspectJ   AspectL   AspectS   Demeter   Pike   TyRuBa  

Also linked from: AOP   Gregor Kiczales   Methods of Reflection   Mozart   Mozart/Oz   Open Implementation   PL 101   Sina   Smalltalk   Socrates   Transparent