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