"I stands all I can stands and I can't stands no more!" (Popeye the Sailor Man)
As most of you may (or may not) know, we have a fairly active Java Metroplex User Group (http://www.JavaMUG.org) here in the DFW area. One of our members (George Lawniczak)is totally sold on Aspect Oriented Programming (AOP) and gave a two hour talk way back on August 27th on the advantages and benefits of AOP. George is also a MicroSoft Maven but, then, we all have our skeletons in the closet. Some of the advantages that he covered were 1. Multiple Inheritance, even allowing the "dreaded diamond" effect 2. Removing objects from scope or putting them into scope willy nilly 3. The power to "not inherit" some attributes from a parent class 4. Changing inheritance of a class from one to another 5. Making all or some of the AOP advantages available to all members of the project 6. Event-driven type programming, i.e., triggers 7. Dynamically have classes/objects inherit or not inherit "on the fly" 8. Rules don't care what happens outside of the rules. When we get the "stuff" it's static. etc., etc., etc. One of the "selling features" of Java, originally, was getting rid of multiple inheritance and moving it over, or up, to an interface. An interface is, after all, a design concept rather than a construction concept. (Thanks, Hafedh.) The other "advantages" really went out into the Twilight Zone, taking over from the basic Java compiler and saying that, from now on (for this project) we will have thus and so, thereby putting these things in the hand of all programmers on the project. On the positive side: On a small, tightly-coupled project, I could see using that kind of power. Maybe. If we really needed it. On a large project with lots of "newbies" all I could see was disaster and mayhem. Didn't we have lots of power with C/C++ programming? And wasn't it really tough to get "newbies" to learn to code properly? After all, most of us had to memorize Scott Meyers 85 rules (contained in two books) in order to properly code a C++ project. Basically, AOP looks like C/C++ Templates on steroids. And STL could REALLY mess up some good C/C++ code in the hands of a renegade programmer. Admittedly, Java took away a lot of the "power" that we enjoyed in C/C++ but it also restored a certain degree of order. Another email is coming concerning that "procedural vs. declarative programming paradigm" part of this thread later today. Richard Halsey calls it "deterministic vs. non-deterministic" but I think that all computer programs are state machines (well, they ARE!) and that any program is deterministic such that with the same rules and the same data you get the same result, otherwise it would be chaos and I don't subscribe to the chaos theory. (Mostly because I don't understand it. :-) Now, I've said all of this without reading a single book on the subject, just the articles and the talk from George and reading some of the information on the web. For example, here's an interview with Gregor Kiczales. http://www.theserverside.com/events/videos/GregorKiczalesText/interview. jsp And here is link to Doctor Dobbs Journal with lots of articles, etc., on AOP. You have to sign up to read the articles but there's no charge. http://www.ddj.com/articles/2002/0208/ There's even a bi-annual DVD magazine devoted to AOP http://www.aspectmag.com/?OVRAW=AspectJ&OVKEY=aspect&OVMTC=standard enjoy... :-) SDG jco -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Alan Moore Sent: Wednesday, October 01, 2003 11:28 PM To: '[EMAIL PROTECTED]' Cc: [EMAIL PROTECTED] Subject: Aspects and rules (was RE: JESS: Jason Morris interview) Right on. Good interview - I like the bits about "back to the future" ;-D Speaking of the future, I was lurking on aosd-discuss and the discussion: http://aosd.net/pipermail/discuss/2003-August/000887.html was about event vs. aspect oriented programming and I posted asking about how those compare to rule based programming. A paper by Filman and Friedman (no relation?) was quoted as saying: Long quote from: http://ic.arc.nasa.gov/~filman/text/oif/aop-is.pdf "Rule-based systems like OPS-5[4] or, to a lesser extent, Prolog are programming with purely dynamically quantified statements... If we all programmed with rules, we wouldn't have AOP discussions. We would just talk about how rules that expressed concerns X, Y, and Z could be added to the original system, with some mention of the tricks involved in getting those rules to run in the right order and to communicate with each other. The base idea that other things could be going on besides the main flow of control wouldn't be the least bit strange. But by and large, people don't program with rule-based systems... They've destroyed the fundamental sequentially of almost everything. The sequential, local, unitary style is really very good for expressing most things. The cleverness of classical AOP is augmenting conventional sequentially with quantification, rather than supplanting it wholesale." R.E. Filman and D.P. Friedman, "Aspect-Oriented Programming is Quantification and Obliviousness", Workshop on Advanced Separation of Concerns, OOPSLA 2000, October 2000, Minneapolis. As it turns out, it isn't as hard as all that - especially with jess. It appears that these are complimentary rather than conflicting technologies. Aspects help create events or the aforementioned control structures from which rules can reason. The noisy work of maintaining "computed" value/state can also be lifted out the rules and data model and sliced in via aspects leaving a cleaner rule set. Rule oblivious components can be easily integrated via aspects - today. "What are you waiting for?" (tm) alan -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Sent: Wednesday, October 01, 2003 6:18 PM To: Jess Mailing List Cc: [EMAIL PROTECTED] Subject: JESS: Jason Morris interview Hi all, Jason Morris has done an interview with me that he's prepping for publication; you can see an excerpt along with a handsome photograph of yours truly at http://www.morristechnicalsolutions.com/ . --------------------------------------------------------- Ernest Friedman-Hill Distributed Systems Research Phone: (925) 294-2154 Sandia National Labs FAX: (925) 294-2234 PO Box 969, MS 9012 [EMAIL PROTECTED] Livermore, CA 94550 http://herzberg.ca.sandia.gov -------------------------------------------------------------------- To unsubscribe, send the words 'unsubscribe jess-users [EMAIL PROTECTED]' in the BODY of a message to [EMAIL PROTECTED], NOT to the list (use your own address!) List problems? Notify [EMAIL PROTECTED] -------------------------------------------------------------------- -------------------------------------------------------------------- To unsubscribe, send the words 'unsubscribe jess-users [EMAIL PROTECTED]' in the BODY of a message to [EMAIL PROTECTED], NOT to the list (use your own address!) List problems? Notify [EMAIL PROTECTED] -------------------------------------------------------------------- -------------------------------------------------------------------- To unsubscribe, send the words 'unsubscribe jess-users [EMAIL PROTECTED]' in the BODY of a message to [EMAIL PROTECTED], NOT to the list (use your own address!) List problems? Notify [EMAIL PROTECTED] --------------------------------------------------------------------