[self-interest] Re: An OO history

Jecel Assumpcao Jr jecel at merlintec.com
Sat Apr 14 22:05:04 UTC 2001


Steve Dekorte asked:

> Interesting, what's the smallest Self could be squeezed into and
> still be useful?

Little Smalltalk 4 has a virtual machine of around 30KB and an image 
(badly encoded - could be much smaller) of 82.4KB. I see no reason why 
a "Little Self" couldn't be even smaller than this. A simple 
interpreter would be slow, of course, but would probably at least beat 
TCL ;-)

Dru Nelson wrote:

> Small note.. Cel is not monolithic. It is declarative
> like some of the newer smalltalks (Pocket Smalltalk).

Before Self 4, I used to work without snapshots (my disk quota at the 
university was far too small for this). So I would always start out 
with an empty world and then load the set of .self files that I needed. 
It is still possible to work this way today, but the nice Demo.snap 
world and large disks don't make it very tempting.

> I think the big problem for Self would be the compiler
> technology. There is a lot there for a particular
> architecture.

There are several Selfs out there (two in Java, even!) and only the 
main one (Sun's 4.1.2) has this compiler technology. You could use the 
same style of virtual machine you employed in Cel to build a Little 
Self.

Samantha Atkins and Reinout Heeck had some interesting comments on Ruby 
vs Smalltalk:

Language elements in general, but syntax most of all, are a matter of 
taste, so it makes no sense to talk about making it better or worse. 
But since we are talking about the history of OO, it is worth 
mentioning how the Smalltalk syntax came to be.

Smalltalk-72 didn't have a fixed syntax: each class had code which 
dynamically parsed the token stream that represented code. This allowed 
programmers to go in their own direction, so a lot of different things 
were tried. Smalltalk-74 cleaned things up a bit without really 
changing anything. There were two drawbacks - compilation was not 
possible (since programs only had dynamic meanings, not static ones) 
and people found it hard to understand and use code written by others. 
So Dan Ingalls took a good look at all that had been done and used the 
ideas that had worked best to produce a fixed syntax for Smalltalk-76, 
which continued to evolve slightly in later versions.

In constrast, the syntax is one of the first things fixed in a language 
design (except for Dylan, which went from Lisp to Pascal rather late in 
life) before any programs have been written. Minor tweaks can happen 
later as the result of experience in using the language, but nothing 
like what happened to Smalltalk.

Again, this is a matter of taste. Some people love keyword messages and 
others hate them. But they were the result of some three or more years 
of practical experience by a bunch of really smart people.

About blocks - they are closures in Self and many other Smalltalks, but 
not in all of them. Squeak is an example - block variables are 
allocated in the home context, which leads to several problems. A patch 
hid the problem of using the same name in several lexical levels, but 
any attempt to recursively use a block will show that it is not a real 
closure. There have been several attempts to fix this, though it only 
makes a difference to very few people.

-- Jecel



More information about the Self-interest mailing list