[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
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
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
Samantha Atkins and Reinout Heeck had some interesting comments on Ruby
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.
More information about the Self-interest