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

Re: Jonathan Rees on OO



At 10:17 AM 12/12/01, Jonathan A Rees wrote:
>Allow me to clarify.  The message was written in haste for a friendly
>audience, so was not as coherent as it might have been.

Allow me to clarify, too.

I wrote my message in haste, too, and it came out more hostile than
I intended.  In fact, I didn't feel particularly hostile when I wrote it, but
the phrase "OO zealots" probably subconsciously turned my heat
setting higher than it ought to have.  I apologize to everyone for any
immoderate language I used, or annoyance I might have caused.

It was the first item on my list for today to send out a half-serious
proposal.  Those of us who think that the CLOS/Dylan model is "the
right way to go" should admit that we have simply lost the rights to
use the term "object-oriented" and choose another one.  I nominate
"protocol-oriented" because (1) it hasn't been taken, and (2) if we
use "function-oriented" people will think we're talking either about ML
or C.

My last message described what I mean by "protocol oriented":
  - Use classes to define state, using inheritance if you so desire.
  - These classes only allow access to slots (fields) via functions, so
    you have your encapsulation there.
  - Use (generic) functions and methods to define operation, using
    polymorphism and method combination if you so desire.
  - Use packages/modules to make functionality be private or public.
  - Make everything in your language be a class that obeys well-
    defined protocols -- "objects all the way down" -- so that you
    have a uniform language for talking about everything.  (Note that
    this requires multi-methods, but not multiple inheritance.)

All this being said, I think that Paul Graham should continue to
omit what he and Jonathan refer to as "object-oriented" from Arc, and
figure out how to make it be protocol-oriented.

>My main point is that "object-oriented" and "object" are not well
>defined, and before you engage anyone in a discussion of them with
>anyone, you need to agree on definitions.

I've trimmed all the rest of the good stuff, all of which I agree with now
that I know the rest of the story.