Aspect Oriented Programming has its roots in Open Implementations / Meta Object Protocols. A MOP lets clients override parts of an implementation to better suit their needs (e.g. memory allocation strategy for objects.) The talk proposes that instead of hiding implementation details, control over "mapping dilemmas" should given to application programmers.
To recover the overhead introduced by opening the innards of the system, Kiczales proposes partial evaluation and code memoization at runtime.
Kiczales' advise to framework/library implementors is "if you can't conquer, at least divide".
Listener: "Is there a restriction that says that meta code isn't allowed to change the behavior of interface code?" Kiczales: "It's really nice if you don't make that restriction, but that freaks people out." (laughter)
A related paper was previously mentioned, and there's also a newer talk on AOP. (Also: AOP discussion on LtU.)
Posted to Software-Eng by Manuel Simoni on 6/8/03; 9:34:20 AM
[stupid comment deleted - it's just dawned on me what "time base compression" means]
One thing that crossed my mind will watching the lecture was that this could be useful for reasoning about programs that contain mutable state. You might be able to use it, for example, to construct appropriate models of code local to some particular point in a program and so implement a "declarative debugger" for imperative programs.