[aosd-discuss] Search on the origin of aspect-oriented programing

Pascal Costanza pc at p-cos.net
Sun Feb 6 09:50:48 EST 2005


On 6 Feb 2005, at 13:49, William CANDILLON wrote:

> Hello,
>
>  I'm french student making research about AOP but I have nothing on 
> the inventors of AOP. Who invented the AOP ? When and how ?

In the sciences, things are usually not invented but discovered. So 
here are two answers:

The /term/ "Aspect-Oriented Programming" (AOP) was invented by the 
AspectJ group at Xerox PARC, led by Gregor Kiczales, around 1995. 
According to [1], it was invented by Chris Maeda. (Of course, AspectJ 
didn't exist back then. The name "AspectJ" was coined afterwards.)

Later on, the term "Aspect-Oriented Software Development" was suggested 
as an umbrella term by Tzilla Elrad around 2001, intended for a number 
of approaches with a similar "theme" that, however, didn't necessarily 
want to call themselves "Aspect-Oriented Programming". (Foremostly 
HyperSpaces, Composition Filters and Adaptive Programming.) Back at 
that time, AOP was almost exclusively used for AspectJ-style approaches 
(and I tend to still use the terms that way).

The /notion/ behind aspect-oriented programming can be traced back to a 
paper by Oliver Selfridge [2]. He introduced the notion of "demons" 
that record events as they occur, recognize patterns in those events, 
and can trigger subsequent events according to patterns that they care 
about.

A first software system that was obviously heavily influenced by that 
paper was called PILOT and is described in Warren Teitelman's PhD 
thesis [3] in 1966. The PhD thesis was supervised by Marvin Minsky, but 
additionally Warren Teitelman mentions Oliver Selfridge as a strong 
influence in his acknowledgements. Marvin Minsky and Oliver Selfridge 
worked both at MIT back then.

(Warren Teitelman later added the concept of advice, very similar to 
before and after advice as we know them today, to BBN Lisp which was 
then bought/licensed (?) by Xerox PARC and became Interlisp.)

Later, the notion of "demons" was mentioned in a seminal paper by 
Marvin Minsky in 1974 that spawned an interest in framework-based 
knowledge representation systems. Among others, Daniel Bobrow and Terry 
Winograd developed and described KRL around 1976 at Stanford [5] which 
was based on the ideas in Marvin Minsky's paper. If I understand 
correctly, before/after demons played an important role in such 
systems.

A little bit later, Howard Cannon developed Flavors at MIT, the first 
object-oriented extension for Lisp, strongly influenced by Alan Kay's 
Smalltalk. Howard Cannon had written a very influential paper [6] that 
was, unfortunately, never officially published. He explicitly mentions 
before/after demons, as do other publications about Flavors, for 
example [6a].

(I have a copy of Howard Cannon's paper here, and I have asked him to 
make it publicly available, but he hasn't responded (yet). His is a 
mind-blowing paper that introduces multiple inheritance, method 
combinations based on macros - i.e. before and after demons and a first 
precursor to around methods -, and the notion of meta-protocols that 
obviously later on turned into the notion of metaobject protocols.)

The experiences with KRL and Flavors had then been integrated at Xerox 
PARC into LOOPS ("Lisp Object-Oriented Programming System"), foremostly 
by Daniel Bobrow and Mark Stefik, implemented in Interlisp. There is a 
nice overview page about LOOPS at 
http://www2.parc.com/istl/members/stefik/loops.html and the papers 
mentioned there can be downloaded at 
http://www2.parc.com/istl/groups/hdi/hdipublications.shtml

Flavors and LOOPS were chosen as the main bases for the Common Lisp 
Object System (CLOS) as part of the ANSI standardization of Common 
Lisp. CLOS was developed by representatives of the various existing 
object-oriented extensions for Lisp. LOOPS / Xerox PARC was represented 
by Daniel Bobrow and Gregor Kiczales. This was around 1986 - 1988.

CLOS has before/after/around methods. I haven't been able to spot when 
around methods entered the scene, whether this was already part of 
LOOPS or whether this was an addition in CLOS. In Flavors, there were 
only before/after methods, but there was an extra concept called 
"wrappers" that effectively allowed one to express the same thing as 
around methods in CLOS.

One of the most impressive outcomes of the efforts behind LOOPS and 
CLOS is the book "The Art of the Metaobject Protocol" [7], which I 
think is one of the most important books in the history of computer 
science.

Crista Lopes' paper [1] describes the subsequent history how metaobject 
protocols were turned into what we think of as aspect-oriented 
programming today. The main motivations, as far as I understand them, 
were a) to move from a runtime-based approach, which is natural for 
metaobject protocols, towards a compile-time based approach and b) to 
make some of the benefits of being able to manipulate the meta-level 
available to purely base-level code.



Pascal


[1] Cristina Videira Lopes, "AOP: A Historical Perspective", 
http://www.isr.uci.edu/tech_reports/UCI-ISR-02-5.pdf

[2] Oliver G. Selfridge, Pandemonium, "Mechanization of Though 
Processes: Proceedings of a Symposium held at the National Physics 
Laboratory on 24-27 Nov. 1958, volum I.", (NPL Symposium no. 10, HMSO, 
1959).

[3] Warren Teitelman, "PILOT: A Step Toward Man-Computer Symbiosis", 
ftp://publications.ai.mit.edu/ai-publications/pdf/AITR-221.pdf

[4] Marvin Minsky, "A Framework for Representing Knowledge", 
ftp://publications.ai.mit.edu/ai-publications/pdf/AIM-306.pdf

[5] Daniel Bobrow and Terry Winograd, "An Overview of KRL, A Knowledge 
Representation Language", 
http://www-db.stanford.edu/TR/CS-TR-76-581.html

[6] Howard Cannon, "Flavors - A Non-Hierarchical Approach to 
Object-Oriented Programming", 1979, 1992, 2003. Unpublished draft.

[6a] Daniel Weinreb and David Moon, "Flavors: Message Passing in the 
Lisp Machine", 
ftp://publications.ai.mit.edu/ai-publications/pdf/AIM-602.pdf

[7] Gregor Kiczales, Jim des Rivieres, Daniel G. Bobrow, "The Art of 
the Metaobject Protocol", MIT Press, 1991.

--
If I have not seen as far as others, it is because giants were standing 
on my shoulders. - Hal Abelson




More information about the discuss mailing list