Smalltalk-72 [Was: threads]
Alan Kay
Alan.Kay at squeakland.org
Mon Feb 18 19:33:45 UTC 2002
Thanks to Marcel Weiher, "The Early History of Smalltalk" can be found at:
http://www.metaobject.com/papers/SmallHistory.pdf
Now to answer David Simmons' question.
First, Scheme came later ca. 75 and was more influenced by the early
work of Landin in the 60s (the great understander of lambda
expressions and the reconciler of LISP and Algol).
The history reveals just how ad hoc was the creation of Smalltalk-72
-- it was the result of a hallway conversation and bet -- this
resulted in my one-pager to show how to do a "really powerful
extensible oop language in one page". Then Dan Ingalls got it
running, and suddenly there was a working system. Though it didn't
have everything I had planned, it was still interesting in its own
right, and we started playing with it.
The feedins for this one-pager were my own thesis work on Flex
(influenced by Simula and Euler), Dave Fisher's control structures
thesis (both of these influenced by LISP), Ned Irons' IMP extensible
language, and Val Shorre's Meta II compiler compiler.
The idea was that one could go McCarthy's half-pager a couple of
notches better if:
* one wrote the interpreter as a loop rather than as a recursion
* objects and classes were the basis
* a message send was just a notification to the instance->class that
a message was waiting
* each class carried the grammar for its interface language
* the grammar was a programmable grammar a la Meta II
* the recognizers were classes with access to the control chains, a la Fisher
* the notification was in the form of a control transfer without
(yet) evaling the params
-- that is the class was executed in the context of the static
and dynamic chain links
A version of this half-pager for ST-72 is given in the appendix of
the history document. I had to recreate it since I couldn't find the
original one I did over two weeks in 72 (I'm sure I have it
somewhere).
The result is a very minimal, but expressively powerful OOP system
with extensible syntax: ST-72.
My intent was that we should eventually make the recognizers look
more like BNF (there are examples of what was in mind in the
history), but we never did. However, Scott Warren (who lurks on this
list) a few years later did "Rosetta Smalltalk" in which he and his
friends correctly figured out where this style should go, and
implemented a version in a very nice and very pretty system on an
8-bit micro.
The problem with an easily extensible language (the overhead of
writing a class at all in ST-72 also allowed new syntax with no extra
work) is that, even with great extensions, a tower of babel can
result pretty quickly. The equivalent of polymorphism, especially
with the addtion of new classes, could change the interpretation of a
message, since the pattern matching was done during receipt of the
message. This introduced ambiguities that could be unpleasant.
Dan decided to implement a fixed syntax when he did ST-76 (a pretty
nice compromise, and nicer than ST-80's today, but similar). We could
have gone a different direction, which would gather up the grammar
from the existing classes, and use it plus symbolic evaluation to
allow both compilation and extensible grammar. Ned Irons did this in
IMP, and it worked quite well in his parallel beam parser except for
the tower of babel effect. Note the interesting problems in
late-binding that have to be solved to allow certain new extensions
to an already running system.
To me, the most interesting thing about this exercise was (looking at
the past) how much expressive power could be obtained from a tiny
amount of code, and (looking at today) how impoverished most
scripting languages are for no reason I can discern.
Cheers,
Alan
------
At 7:59 AM -0800 2/18/02, Alan Kay wrote:
>Hi Dave --
>
>An interesting question. The story of Smalltalk-72 is in "The Early
>History of Smalltalk" that I wrote for the ACM almost 10 years ago.
>I have a .pdf of this which I will post in a swiki if someone will
>give me URL of a good place to stash it.
>
>Then I'll answer your question.
>
>Cheers,
>
>Alan
>
>------
>At 1:34 PM -0800 2/17/02, David Simmons wrote:
>>Alan,
>>
>>Why was the Smalltalk-72 form abandoned/changed to create Smalltalk-80?
>>
>>I just looked over the manual and it was fascinating. It looks like a
>>hybrid between scheme and half-a-dozen scripting languages that showed
>>up between the late-80's and early-90's.
>>
>>Smalltalk-72 might well have been a very popular scripting language for
>>the internet 90's era.
>>
>>-- Dave S. [SmallScript Corp]
>>
>>SmallScript for the AOS & .NET Platforms
>>David.Simmons at SmallScript.com | http://www.smallscript.org
>>
>>> -----Original Message-----
>>> From: squeak-dev-admin at lists.squeakfoundation.org [mailto:squeak-dev-
>>> admin at lists.squeakfoundation.org] On Behalf Of Bijan Parsia
>>> Sent: Saturday, February 16, 2002 10:17 AM
>>> To: squeak-dev at lists.squeakfoundation.org
>>> Subject: re: threads
>>>
>>> On Sat, 16 Feb 2002, Helge Horch wrote:
>>>
>>> > At 23:57 15.02.2002 -0500, Bijan Parsia wrote:
>>> > >That being said, I don't quite get all of the Smalltalk-72 model,
>>> though
>>> > >I'm diligently (for me) perusing the manual :)
>>> >
>>> > Ah!, you mean the one at
>>> > <http://www.spies.com/~aek/pdf/xerox/alto/Smalltalk72_Manual.pdf>?
>>>
>>> Yes indeed, thanks to whomever put that up. I guess I should pop the
>>link
>>> into the swiki.
>>>
>>> Cheers,
>>> Bijan Parsia.
>>>
>
>
>--
--
More information about the Squeak-dev
mailing list
|