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