[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.