Polymorphism without protocol dilution

Maurice Rabb m3rabb at stono.com
Tue Sep 1 16:57:31 UTC 1998


On 8/29/98 at 4:37 PM, alank at wdi.disney.com (Alan Kay) wrote:
> Unfortunately, we forgot that languages are also for communication --
> for being read, not just for being written -- and what we quickly wound up
> with was a Tower of Babel -- as least as far as people who were trying to
> learn from our code were concerned. For Smalltalk-76 we decided that the
> language should be always be readable, and that the extensibility that was
> really needed was in expressing meanings.

At 12:04 PM 8/30/98, Marcus Denker wrote:
>From the Camel Book ("Programming Perl", by Larry Wall, Tom Christiansen &
>Randal L. Schwartz) p.2.
>
>"Languages were first invented by humans, for the benefit of humans. In
>the annals of computer science, this fact has occasionally forgotten.
>Since Perl was designed (loosely speaking) by an occasional linguist, it
>was designed to work smoothly in the same ways that natural language works
>smoothly. Naturally, there are many aspects to this, since natural language
>works well at many levels simultaneously. We could enumerate many of these
>linguistic principles here, but the most important principle of laguage
>design is simply that easy things should be easy, and hard things should be
>possible. That may seem obvious, but many computer languages fail at one or
>the other."
>--
>p. xi

At 12:16 PM 8/31/98, Mike Klein wrote:

[munch many good points]

Once a method name is used in an important protocol it is gone.  It is
shame that so many names have been misused, and so many methods are
misnamed.  That is why I am so obsessed with creating good names before
they get locked in stone for posterity.

It reminds me very much of the misuse of the electro-magnetic spectrum.  It
is a finite space that cannot be taken for granted.  I know that from time
to time there is discussion of sub-namespaces.  However if I am correct,
this discussion is surrounding the class name space, not the method name
space.

In some sense, even more than in spoken languages, we need to use messaging
words with precision.

>
>Object >> fullyEvaluated
>
>fullyEvaluated
>        | result lastResult |
>        result := self.
>        [(lastResult := result) respondsTo: #value] whileTrue: [
>                result := lastResult value.
>                result = lastResult ifTrue: [^result]].
>        ^result
>
>This is sort of like Mathematica's evaluation loop (without the Hold[])
>  [0->[3]] fullyEvaluated   =>   3
>
>-- Mike Klein

Considering this, like Mayor Quimby, I want to flip-flop.  I now like
#evaluated better than #asEvaluated.  It seems that every instance of an
'as' method suggests some kind of copy is created.  I don't necessarily
intend a copy, just an evaluated version of the object.

Ahhhh Mathematica!  Yet another way cool product from good ol' UI.

--Maurice

---------------------------------------------------------------------------
  Maurice Rabb    773.281.6003    Stono Technologies, LLC    Chicago, USA





More information about the Squeak-dev mailing list