LuùÔ Miguel LoureníÐ said: > I'm working with some friends on an AOP comparison across several > programming languages. We're doing this as a small project for a > college course. We want to talk about AOP and how it's been implemented > in various languages, it's influence on them and how it's being > accepted by their various communities. > [...] interesting quote by Dave Thomas [...] in which he > says "Once you have decent reflection and metaclasses, AOP is just part > of the language.". I'm not sure I agree with it. [...] What an interesting project, I wish you luck. I have a (non-ruby) friend who is very interested in AOP. He and I have talked about this on and off about AOP in a language like Ruby. My position is very similar to Dave Thomas's that you quoted above. Once you have powerful meta programming abilities in a language, the AOP becomes pretty straight forward. Here's a thought. One can think of AOP as a Domain Specific Language for doing a limited set of metaprogramming operations. Since Ruby is recognized as fairly good language to use to implement DSLs, so using Ruby directly to do AOP stuff isn't a far stretch. Another data point. AspectR provides a large percentage of AOP capability. Its only around 200 lines of code! Compare that to AOP in Java or C++ aspect lanaguages and you begin to get a feel for how easy AOP is in Ruby. One final suggestion: Propose a couple AOP like operations that you would like to see. Then implement them in Ruby and compare it to the implementation in Java/C++. I would like to see some of the operations you would suggest. -- -- Jim Weirich jim / weirichhouse.org http://onestepback.org ----------------------------------------------------------------- "Beware of bugs in the above code; I have only proved it correct, not tried it." -- Donald Knuth (in a memo to Peter van Emde Boas)