[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Aspect Oriented Programming in context of lightweight languages.

I talked to Gregor about this, this morning.  What he said, was that the MOP was too powerful for most programmers to make use of.

We didn't go into details, but i would say that most programmers don't need to make use of the MOP.  When you programmed at the MOP level, you were actually changing the language.  

When you use AspectJ you are changing the behavior of your program, perhaps in very subtile ways, but you are not changing the Java + AspectJ language.

In the mid 80's, when PCL, the prototype of CLOS came around, Lisp had already had about 10 years experience with several object oriented extensions, especially Flavors, and New Flavors. The experience of these extensions extended into Dylan and Goo, today.

There was a belief  that the only way to accommodate everyone who wanted an OO Lisp, was to provide a language where pieces of it could be pushed into other areas of the language design space. 

People at BBN eagerly awaited each installment of PCL, which was named after a holiday.  It was a miracle that it worked on about a dozen Lisp's that were available in those days.

Normal programmers didn't need to worry about the MOP, they just use objects and multi methods and before after and around kept them pretty happy.  Occasionally they would define their own method combination, but the most useful ones were aready provided.  You could argue that this was an unnecessary complication to Common Lisp.

Others need a new language feature.  For example, working on the BBN Butterfly, a parallel processor, i needed synchronization.  The interesting thing was i could add it in various ways, such as object level synchronization, as Java has, and at a per slot (field) level.  And that i could do it as a mere MOP programmer, not as a compiler guru.

I've had less hands on experience with AspectJ, but there is a learning curve there too.  You need to learn vocabulary like "join point", "point cut", "aspect", "advice", "introduction", and a languages which is Java like, but different enough to be quite confusing.  But unlike the MOP, you aren't extending the language, you are extending your program.  Maybe that's easier to understand.

At 12:47 AM 3/20/2003 -0800, Michael Vanier wrote:

>Now that I think of it, I believe the comment referred to metaobject
>protocols.  Do any MOP gurus wish to comment about whether a MOP can be
>viewed as a superset of AOP and/or something that AOP can easily be
>implemented in terms of?  
>[Ouch -- we're getting into TLA salad here...]
>> Date: Wed, 19 Mar 2003 23:40:56 -0500
>> From: Daniel Weinreb <DLWeinreb@attbi.com>
>> Michael Vanier wrote:
>> >I read somewhere (perhaps in an interview) where Kiczales said that CLOS
>> >was too powerful for most programmers to make good use of, and AOP was his
>> >attempt to simplify the underlying ideas and make them accessible to more
>> >programmers.  I'm paraphrasing; if anyone finds the original source, please
>> >post a link.
>> >
>> Hmm. When I went to Gregor's one-day workshop at MIT last fall, I am 
>> pretty sure that the line he
>> took was that object-oriented programming is just great as far as it 
>> goes, but that there are further
>> issues of program/system modularity that are beyond its reach, and 
>> aspect-oriented programming
>> exists to deal with some of those additional problems. That sounded (and 
>> still sounds) right to me.