Squeak (ST80) syntax
Jerome E. Garcia
jerome at lightsurf.com
Wed Feb 16 21:16:39 UTC 2000
I have to second this!
This is great! It is the only thing in the whole syntax and Smalltalk-2000
discussion I have really liked. I would also bet that it would make it
easier to teach Smalltalk.
Jerome
> -----Original Message-----
> From: Lex Spoon [mailto:lex at cc.gatech.edu]
> Sent: Wednesday, February 16, 2000 1:07 PM
> To: squeak at cs.uiuc.edu
> Subject: Re: Squeak (ST80) syntax
>
>
>
> Wow, this is beautiful. I'd disagree on "Manything", but the following
> are simply awesome:
>
> Thing
> Nothing
> Everything (though i like Universe (since World is taken))
> Kind
> yes, no
>
>
> I'd add one thing to your list:
>
> inject:into: --> accumulate:startingWith:
>
>
> Oh, and of course, don't forget:
>
> ifNil --> ifNothing
> ifNotNil --> ifSomething
>
>
> I'm not so sure about #ifNo:, beacuse it doesn't read very well in
> English. How about #ifSo: and #ifNot: ?
>
> This is so fun. I'd betchya this really would make it easier to teach
> Smalltalk, although as Dan pointed out, it will take data gathering and
> not abstract argument to decide for sure.
>
>
> Lex
>
>
>
>
>
> Travis Griggs <tgriggs at keyww.com> wrote:
> > Stefan Elisa Kapusniak wrote:
> >
> > > In edu.uiuc.cs.squeak, Dan Ingalls <Dan.Ingalls at disney.com> wrote:
> > >
> > > >Yes. We refer to this as "implicit self". Alan is the strongest
> > > >proponent of this appraoch in our group, actually, and SELF works
> > > >this way as well. We seriously considered this also back in
> ST-74 (!).
> > > >The two things that have prevented enthusiastic adoption of this
> > > >approach are...
> > >
> > > I have a nagging notion that part of the problem here
> > > may be that "self" shouldn't have the name "self". I
> > > think I'd feel better if it were "thisObject" or
> > > something. "self" really indicates me, myself, sitting
> > > here at the keyboard typing this email. I suspect
> > > non-programmers find the overloading of the word a
> > > bit confusing.
> > >
> > > It's sort of like having to pretend you're the object
> > > to work out what's going on or what to say. I think
> > > this might act as a hurdle -- tho' I don't have any
> > > evidence of it.
> > >
> > > Changing the name to something more like "thisObject",
> > > would work better for 'typing in the air', and inspector
> > > workspace type things, even if you didn't make any other
> > > alterations.
> >
> > I think the ever presence of self is a good idea; I note that
> in discussing
> > C++ and Java code samples with people, it often becomes obvious
> that it's
> > just scoped subroutines and structures as well. The fundamental basis of
> > message sending is often missed. I think the ever presence of
> 'self' drives
> > home the reciever <- message paradigm.
> >
> > I do agree with Stefan on this name issue as well. My wife doesn't do
> > computer programming. Nor does my mother or brother or father
> or many other
> > people that one would find in other walks of life. Sometimes, the
> > discussions cross over to what I do. They recognize the "object
> oriented"
> > thing, because that's been made into a media buzz word. But
> they don't know
> > what it means. People ask "what IS an object?" And then I try
> to create a
> > map for them so that they can map terms that are familiar with
> them to the
> > OO way of thinking. I've always wondered why it is I have to do
> that. The OO
> > way of thinking is really a quite natural one, but it's masked in
> > computerese terms.
> >
> > A while back, I did some experiments where I changed not the syntax of
> > Squeak, but the semantics of some of the core pieces of the
> language. It was
> > a real riot. What's an object? That's always the question I get
> asked first.
> > I always answered "It's a Thing." Why tell people that over and
> over again,
> > why not just make it so? So object got renamed to Thing (One can do this
> > without really screwing up the system by simply renaming
> Object, but giving
> > it two entry points in the Smalltalk dictionary, Thing and Object). Then
> > came nil. What's that? It's the single instance of
> UndefinedObject. But now
> > I guess it's an UndefinedThing, which is a long way of saying it's a
> > placeholder for Nothing. So UndefinedObject became Nothing, and
> an alternate
> > pseudovariable representation was added for nil: nothing (for
> grins a put a
> > "notta" in there too). It was amazing how simple this was to do
> in Squeak,
> > and yet maintain backwards compatibility. At this point I
> started noticing
> > that there was something cool about this "thing" stuff, it had a certain
> > metaness to it that was fun. I was able to have the "is Nothing
> someThing?"
> > discussion right there in Smalltalk. Of course it was, because Nothing
> > derived from Thing. At that point, it got really fun. The
> Smalltalk global
> > got renamed to Everything. Collection became Manything. I still
> haven't hit
> > on what Anything and Something should've been. Then it came to classes.
> > What's a class? A class is a kind of Thing. So, it got renamed.
> Kind. That
> > was easy to explain to my wife. When we got talking about Kinds
> of Things,
> > the whole notion of classification became much more tractible.
> Vehicle was a
> > Kind of Thing. Car was a Kind of Vehicle. And a particular
> instance of a Car
> > was a Kind of Car. The message kind was implemented in Thing to return
> > class. On the Kind (er Class) side of Thing, kind returned
> superclass. Since
> > I'd renamed everything else, it was time to rename the psuedo
> variables. To
> > make Things more anthropomorphic, "I", "me", "my", and "this"
> were added as
> > variations of "self". Since many people aren't boolean logic
> masters, "yes"
> > was added as an alternative for "true" and "no" for "false". Parallel
> > versions of ifTrue: and ifFalse: were added. I never did come
> up with a good
> > rename for super or thisContext. But the code started to look
> kind of cool,
> > and Squeak's very natural language appearance helped.
> >
> > Set>>select: aBlock
> > | result |
> > result := self kind new.
> > 1 to: my size do: [:i | | something |
> > something := I basicAt: i.
> > something isNothing ifNo: [result add: something]].
> > ^result
> >
> > I would think this kind of semantic evolution would be more
> beneficial than
> > a syntactic one. Unfortunately, I never finished the above up and got it
> > out. I got hung up on trying to create a parallel namespace for
> this stuff
> > and then one tangent led to another... sigh.
> >
> > --
> > Travis Griggs (a.k.a. Lord of the Fries)
> > Member, Fravenic Skreiggser Software Collective
> > Key Technology
> > P-P-P-Penguin Power!
>
>
More information about the Squeak-dev
mailing list
|