Newsgroups: comp.object


In article ... objsys@netcom.com (Bob Hathaway) writes:

| [I think we've beaten these subjects to death and I unfortunately don't have
| the time for these long replies.  I'll just wrap-up and let us try to get
| on with things.  Perhaps a wrap-up from Chris would be nice too]

I agree about the amount of time we're taking. I'll try to be brief and
not *too* argumentative in this posting -- it's only just over 200
lines long.

I'll attempt to summarise positions rather than giving a blow-by-blow
response to Bob's wrap-up. I hope there'll be enough context around to
make things clear.

-- On multi-methods ---------------------------------------------------

The term seems to have been invented by the CLOS community and it seems
wise to restict its use to the CLOS style of method dispatch in order
to avoid confusion.

CLOS has both ``ordinary'' functions (provided by the Common Lisp in
which it is present) and ``generic functions'' (which provide, or
``are'', multi-methods). Multi-method invocation is not biassed toward
any particular argument as a ``receiver'' of the ``message'', or toward
any particular class as ``owning'' the method.

Bob correctly calls me on the ``symmetry'' I have been claiming for
multi-method dispatch, because of the CLOS's (default!) left-to-right
precedence order. Note, however, that this precedence order is used only
when selecting among several applicable methods, to decide whether one
method is ``more specific'' than another. When the details of Bob's
dispatch algorithm are known, it will be interesting to compare them to
the CLOS one.

-- On packaging & ``friend'' ------------------------------------------

Bob says that classes and friends are more powerful than packaging,
because they give you more control over scoping -- that is, you
can express the necessary connections of names without having to provide
many additional connections.

I think that name-hiding is important *independantly* of classes,
because classes are but one of the interesting structuring methods to be
found in programming. If the C++ notion of ``friend'' is genuinely
useful, it can be incorporated into a module mechanism -- presuming that
other, more elegant, techniques are not found.

Bob regards CLOS as not having a ``real'' protection mechanism. I regard
it as having a real, if less powerful than I would like, protection
mechanism, viz packages. I think Bob confuses the philosophy of Lisp
systems with language structures they provide -- a Lisper might be
unhappy to be deprived to access to the internal symbols of a package,
but the Lisp ``packages+generic functions'' approach would transplant
quite happily to such an environment -- and give the protection that Bob
desires.

-- On physics and modelling the world ---------------------------------

Bob's position, which initially I read as ``the world *is* made of
objects which interact by sending messages'', seems now to be that as
our knowledge of the world improves, so do our models [It's not clear
to me if by ``model'' he means ``program''; I certainly don't.] and
hence, so do our object-oriented models.

My position is that physics teaches us that objects are *not* givens of
the natural world, and that the notion of ``object'' is a human
construct -- very useful, true as far as it goes, but only one way of
viewing an enormously rich world, and inadequate to describe in its own
terms phenomena that actually arise in the world -- phenomena of
*relation* rather than *object*.

And that, so far as modelling the world goes, use whatever works.

-- Bob's Book ---------------------------------------------------------

Bob suggests that he's going to produce a book explaining his views more
fully.

I look forward to reading it. Have you a publisher?

-- OO Books -----------------------------------------------------------

I treat this one with quoting, because it makes a point that I think has
been important at several places in this debate.

| [On all OO books (hundreds of them) oriented towards more accurately modeling
| the real world.  Chris doesn't beleive me?]
|
| There're too many to list.  Just go to your local technical bookstore and dig
| thru a few hundred.  If you do this and don't find literally hundreds of them
| (maybe your bookstores stock differently than ours) send email and I'll send
| you a list.  I'm not just going to send you the oggles of them lying around
| on my (and others) desks.

Bob seems to have missed my point and substituted one of his own -- in
wild defiance, I might add, of my message, which read:

# Well then, let's have the references. Let's say ten works which take the
# view that the world is object-oriented in the style that Bob has
# described in earlier posts.
#
# I am *not* interested in works by the sellers of OO methods or OO
# language designers, unless they specifically address the issue of the
# ``universality'' of OO. I *am* interested in works by physicists,
# philosphers, and psychologists. If you (Bob, or any other reader) don't
# like these criteria, let me know why.

I do not doubt that the sellers of OO methods are using OO to model the
real world, and that they be doing a better job of such modelling than,
say, ``functional modelling'' does, or hack-and-slay coding does, or
Blind Faith ``Do What You Like'' does. The point we were addressing [or
I thought we were addressing]

   Are the notions of OO (objects, messages, encapsulation) in some
   sense a property of the *world*, or are they just was in which we
   *think* about the world? Is the world ``object oriented''?

That is, we started out talking philosophy. Now Bob appear to be talking
about software engineering. I don't mind, so long as it's clear what
the topic *is*.

I would rather like to know which ones are *representative* of Bob's
rather -- to my mind -- extreme point of view.

-- On concurrency -----------------------------------------------------

Bob has expressed surprise at my my surprise at him having concurrency
in his model. In fact, I was not surprised at *having* concurrency, but
at him having produced it out of a hat -- concurrency not being a
standard feature of OOP.

This reduces to my not knowing what the base level of Bob's OO system
being. Since Bob has never spelt it out, I do not think I am entirely at
fault.

[Let it be recorded that I think that concurrency *is* an important
feature of our descriptions of the real world, and a useful thing to
have in a programming language. Let it also be recorded that I think it
can be very tricky.]

Bob suggests that there are many excellent reference works on concurrent
OO systems. I would be happy to hear what they are. [Reading them is, of
course, unlikely to affect my views on how OO is related to physics and
the real world, although it might teach me a great deal about certain
representational schemes.]

-- On modes of discourse ----------------------------------------------

Because of my persistant failure to convince Bob of anything (and, I
suppose, the reverse as well), I suspect some communicational problem.
Bob suggests in several places that I am ``confused'', without seeming
to realise that, to me, *he* is confused.

To improve communication, we should (have made) make our bases clear; to
say what problems we are trying to solve; to avoid ascribing to others
feelings and ideas not supported by their own words. I cite:

| You seem to have latched on to some trivial static efficiency tricks and
| took them as the general case.

Here (as elsewhere) he seems to have invented some behavior for me which
is not only false-to-fact, but pointing *away* from positions I might
reasonably be thought to hold. Where in what I have said is there a
suggestion of ``static efficiency tricks''? Given that I have not
*argued* for static *anything*, whay should I be taken to be bound by
certain ``static ... tricks''?

| Maybe you should consider this issue further before posting any more
| specifically on this subject.  It appears to me you're not even close
| and I'll often assume someone is when they discuss a subject.  You're Ok
| on other points but seem to be still learning on this one.

Since Bob hasn't said what he thinks my confusion is (that is, in the
light of my earlier remarks, he hasn't stated what the problem is), I
have no idea what he means. How am I supposed to make progress?

The tone of the last sentence is condescending.

| >That's odd, because a few messages back, you claimed that they *did*
| >have multi-methods. At least, that's how *I* read what you said; if you
| >were actually discussing your company's own language, there was no way I
| >could tell, and you certainly didn't disabuse me of the notion.
|
| Nope, you were confused.  You were claiming that O.M(...) meant single
| argument dispatch, which was wrong, and which is why you had trouble
| understanding my postings.

If I was confused, it was because Bob hadn't made his ground rules
clear. The traditional OO languages have used both the O.M syntax, and
mono-method dispatch (at the language level; I do not dispute that could
have constructed multi-argument method selection on top of that).
Without evidence, why should I have believed that he meant this
``non-standard'' interpretation?

| All of what I said was quite clear with a good
| understanding of the issues involved and their context.

And when you are explaining new and different ideas to people,
it's usual to assume that they *don't* already understand what you want
to say. Perhaps this is a lesson for all of us; try and make it clear
what you mean and what you're asking; don't assume the other has access
to technical knowledge that you have been inventing; give references to
your source material.

-- On finance ---------------------------------------------------------

| But don't worry, my consulting fee is only $500 an hour and I'll just bill
| you;-)

The billing (if not the cooing) will be mutual, I'm sure :-)
--

Regards, Kers.              | ``Remember Thor Five!'' (Earthman, Come Home)
Newsgroups: comp.object