Aspect-oriented programming is more than just a clever means of adding tracing to in-field code. The language has matured to a point where it can support both development-time and production-time code aspects. Stephen Morris briefly provides some background and then shows you how to get productive quickly with AspectJ.
You can also use AOP or COP (Context-Oriented Programming) using Common Lisp. see: http://common-lisp.net/project/closer/aspectl.html
..Common Lisp is where the (original?) developer of aspectj got the ideas and inspiration from
The issue of dividing “concerns” pertains to programming in general–keeping code modular is good form. It’s good theory, but in practice you can’t always do it.
I heard “LISP” stands for “lots of silly parenthesis.”
I’m sorry, but the person who coined “LISP” must have been brain-dead to marketing–we have to teach programmers to be a little less foolish or we’ll all suffer. (A certain type of person is known for lisping…) was that intentional? “Eunich” is similar. What’s up with this? Makes one think of conspiracies.
Ok the idea for Lisp came from Dr. McCarthy back in 1960. Calling him brain dead is just preposterous. Plus the language was never supposed to be anything but a research project. Only his graduate student decided to write the thing and then it turned out that the computers at that time were not powerful enough. Only I am not quite sure what aspect oriented programming has to do with Lisp. If anything Ruby is a descendent of Lisp ( minus the macros ).
Oh and since apparently people started listing languages that can use AOP well maybe I should add C++ as well. Adding AOP capabilities to a language is not that big of a problem. The problem is do you actually need AOP in order to achieve your goal and is the added level of abstraction worth the gain? In many cases it is not but then again there are many other where it is.
Actually, Ruby is a descendent of Smalltalk, not Lisp.
You seem to have a misunderstanding of what Lisp is. Lisp, because of macros (although that is a bit of a simplification), is a programmable programming language. It isn’t confined to one paradigm of programming. It isn’t just an object-oriented language, it isn’t just a functional language, it is all of those and none of those. AOP has as much to do with Lisp as OOP (and Lisp has a very sophisticated object system in CLOS). That is to say, if you are interested in AOP then Lisp is a language you should look at just as much as if you were interested in doing some OOP.
One thing Lisp is not is a reflective programming language.
If only you could attach a lambda to an evaluated expression it would be!
BTW, what is Aspect Oriented Programming?
Edited 2006-03-14 17:30