[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