"Steve Merrick" <Steve.Merrick / Marconi.com> wrote in message news:<a5vg10$bkg$1 / newsfeed.pit.comms.marconi.com>... > Isn't there some similarity between IP and Aspect-Oriented Programming? > (Or is it just that I know far too little about both of them? :-) To massively oversimplify: Both of them address the problem of having one concept (say, synchronization, or the use of the visitor pattern, or prefetching) spread out across multiple locations in your code base instead of neatly encapsulated in one place. Both of them take a basically "generative" approach - the concept (or "intention" or "aspect") is defined in one place, but generates some code in all the locations it's needed. The fundamental difference is how these locations are specified: in AOP, they're specified using some kind of pattern-matching scheme at the definition of the aspect. The "join points" to which the aspect is being applied have no indication that code is going to be inserted there. However, it is possible by looking at the aspect definition to know all of the locations in which code will be inserted. In IP, the concept ("intention") is still defined centrally, but instead of having a pattern specifying where it will be applied, a keyword is used at each point that the intention needs to generate code. IP is thus similar to an extremely sophisticated macro system. The other difference is that while AOP tends to have a base language (eg. Java) that it is ultimately generating code in, IP intentions are just generating more intentions, down to a set of primitives that as I understand it are basically bytecodes.