From: intc_ctor@... (Phil Tomson) Date: 2004-02-14T09:34:55+09:00 Subject: Interesting article on the shortcomings of the OO model http://java.sun.com/developer/technicalArticles/Interviews/livschitz_qa.html She argues that objects (as now conceived in OO programming ) fall short as an abstraction for reality. She says we need also to have 'processes' and 'conditions'. Though she never really defines these terms, they do seem familiar from the Hardware Description Language world. I suspect a process in this context is a block of code that gets launched when a condition becomes true, but this is not like some kind of if statement like so: if condition do something It's more like: process(condition) { something to be done } process(condition2) { somethingelse to be done } The two processes constantly monitor the conditions and when their respective condition becomes true the code for that process is launched. (this is how it is with HDLs)... of course, I could be totally misinterpreting what she means by 'processes'. she also argues that we need new forms of code reuse other than inheritance. Speaking of which... I know this was discussed a year or two ago here, but I find myself using inheritance less and less with Ruby. I'm much more likely to use aggregation, mixins or to add methods to existing classes. I actually can't recall the last time I used inheritance. I wonder if some of the ideas posited in the article might already be taking shape among the dynamic languages like Ruby. Especially in regard to her comment on refactoring being a very painful process. Phil