From: Bob Hathaway <objsys@netcom.com>
Subject: Re: O.M(...) vs M(...), and is the Real World O-O?
Date: Sat, 05 Sep 92 01:15:41 GMT
Organization: Object Systems

                  [Don't read the P.S.'s on this one!]

In article <KERS.92Sep3100309@cdollin.hpl.hp.com>, kers@hplb.hpl.hp.com (Chris Dollin) writes:
> >   ....................................................  This means the
> >   object-oriented constructs are simply used to simulate and model the
> >   real-world.  For example, the "world" will enforce an equal and opposite
> >   reaction whenever an object undergoes some force in the world model.
> >
> >Isn't this use of a ``world'' a violation of the object-oriented model you
> >propose? 
>
>   Absolutely not.  It is a perfect use of object-oriented technology as I've
>   already given you many examples and explanations of.
>
>If that's your idea of perfection in an object model -- resolve difficulties by
>having an additional object which handles all the things that local objects
>can't handle -- then you and I have remarkably different notions of perfection,
>object models, and what constitues a ``natural model'' of the world -- again,
>if you recall, this being where we came in.

This paragraph is just to show tenability for the approach *I* was advocating.
To keep things very simple, if one has a graphical model in which objects
exist (or are mapped into) then there must be a coordinate "space".  For
example, it is common to use a spacial partitioning representation which
keeps track of various object's positions in space.  Then its easy to see
when objects come in contact or to apply (or to have the objects apply)
forces.  This space is therefore an object and can even be viewed as a
container.  It can enforce laws such as: two objects cannot occupy the same
space at the same time.  The objects themselves could enforce such laws but
the space must still exist nonetheless.  And the objects deciding for
themselves has the problem that they can do anything.  This is not a problem
with a controlling "space" (universe, world, or whatever) that ensures all
laws are enforced.  This is a "natural" solution since it fits in with the
real world well (objects do exist and do *occupy space* whether one
subjectively understands or believes this or not) and is a classical solution.

>It's never been clear to me whether you've been arguing from the *descriptive*
>stance (``this is how certain languages *are*''), the *prescriptive* stance
>(``this is is how languages *should be*''), or the *analytic* stance (subcase
>of descriptive; ``this is how languages *could be seen*'').

I was arguing from a general position: "this general facility can do ...,
... does it this way, ... does it that way.  Why are people pointing to ...
when it is weaker than the general case and since the latter is what's
important?"  When none of the ...s do it well enough I try to do something
about it and carefully consider *constructive* feedback.

>Thus, C++ and other statically typed OO languages *do* only dispatch on one
>(the ``first'') argument [anyone have a counter-example?], but they *need not*
>-- that is, static typing does not conflict with many-arg dispatch.

Static typing does interfere with multiple argument dispatch.  Just like C++'s
multiple-inheritance interferes with virtual's contra-variance and C++'s
implementation of virtual base classes interferes with downcasting, downcasting
interferes with C++'s ability to perform multiple argument dispatch with
virtuals (meaning all overriding signatures must match exactly).  And C++ is
a perfectly good example of a statically typed (no types exist at run-time)
OO language.  To spell it out completely,-) all statically typed OO languages
will suffer from this "conservative estimate" problem and *obviously* static
and dynamic functions *always* switch on all argument types available either
statically or dynamically (with static overriding as the special substitution
case under discussion).  [8th time]

>fact, I don't think it's a ``trivial static efficiency trick'' -- given the
>(a) alternative, such as CLOS-style multi-methods, which are quite hard to
>implement efficiently in the general case, it's a rather elegant solution.

Its not very hard since there are loads of common optimization techniques but
it can take a little longer.

>Regards | "Always code as if the guy who ends up maintaining your code will be
>Kers.   | a violent psychopath who knows where you live." - John F. Woods

Regards | "Always seamlessly and elegantly implement your well thought out
Bob.    |  design and never just "code" lest you be judged by the consequences
        |  of your own actions." - S. Engineering

P.S.  I'm truly sorry, but I can't resist:

>[Bevan: he (like Chris) couldn't understand OO message "multi-methods"]
>
>   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.
>
>At the risk of appearing as arrogant as the above: ditto
>
>bevan

Considering the number of mistakes made by Chris on this subject (arg matching)
and your ambiguous referent (which I thought you disapproved of, Steve):

                     AT LAST WE AGREE!

For background, bevan is an old outspoken mathematician/functional-oriented
person while I am an outspoken OO person.  We first met when bevan argued
against natural language "like" programming langauges (Pascal/Ada/Smalltalk
were some of my examples along with some extensions) and he even went so
far as to claim that natural language interfaces to databases (which allow
anyone to easily access a database) were a bad thing!  Chris and I first got
into it when Chris claimed that hierarchical restrictions on packages were a
good idea!  [This hasn't been popular lately and nor was it with me back then]

P.P.S.  I've done all of this argument matching stuff before (including
  something like the CLOS style) so its not really fair (to Chris or Steve).

P.P.P.S.  I'll have to relookup objectivism.  I thought they included
  ridiculous principles such as "universal truths" and not just scientifically
  measurable and observable universal laws.  Because I draw the distinction
  between the subjective and the objective I don't believe I'm in their camp.

P.P.P.P.S.  As usual, my company doesn't even know about my postal activities!
Newsgroups: comp.object,comp.lang.sys