During an IM chat with my colleague Jon, he used the term ‘Push Inheritance’ to describe aspects. Not sure if he came up with it first, but it was such an apt description. Adding aspects is like dynamically slotting an object into an inheritance hierarchy after the fact. It really helped my understanding of aspects.
We also dicussed how Ruby has aspects built in – its possible to hook into the Ruby kernel and intercept every single method invocation, or replace the default implementation of ‘new’ with one of your own, wrapping your objects at instantiation time. Ruby rocks.
Check out the ruby-talk archives for some good discussions on ideas of how to write an interceptor under the current Ruby implementation…having worked with Nanning it made for good reading.
Ruby mixins are one of the coolest things going too, which seems like a big component of what a lot of AOP means to lots of people.