http://aspectj.org/pipermail/users/2000/000536.html Charles Reynolds writes: Thanks for the responses below. I found the Lopes dissertation not only insightful, but well written, a pleasant read. And I now think I understand the difference between an AOP language and an aspect-specific language. Gregor Kiczales writes: I'd like to stress this important point for others. This is something we probably don't make clear enough in our documentation. The main idea in AOP is to provide support for modular implementation of crosscutting concerns. So an AOP language, of any kind, is going to provide constructs that make it possible to write code that explicitly crosscuts modularity boundaries -- but does so in a principled way. AspectJ is a general-purpose AOP language, in the same way that Java is a general-purpose OO language. AspectJ provides general crosscutting mechanisms, that are not particularly tuned to writing any specific kind of aspect, in the same way that Java provides general inheritance and polymorphism mechanisms that are not particularly tuned to writing any specific kind of class. It is possible to write higher-level AOP languages -- aka aspect-specific languages. That's what Cool and Ridl, and RG, and AML were.