Hallelujah!

From: Derek Peschel <dpeschel_at_u.washington.edu>
Date: Sat Apr 3 23:18:31 1999

> On Sat, 3 Apr 1999, Derek Peschel wrote:
> >I hope you'll try Squeak again, though. Are you using UNIX? You may find
> >the MS-Windows and Mac versions more stable. Smalltalk's mechanism of
> >message passing and the "everything is an object" philosophy give it a
> >unique power.
>
> I was using the Windows 95 version, and it was constantly swapping. I have
> 16 megs RAM, but I hardly think it should take that much. Is there a GNU
> smalltalk? Is it possible to get a PC-comptaible version of the type of
> Smalltalk used for the Alto?

I thought you meant it was crashing. It may well use up your 16 megs;
Smalltalk tends to be memory-hungry. See if there's a command-line option
to set the amount of memory used by the virtual machine. As I understand
it, the VM can easily _increase_ the amount of memory it uses, but
_decreasing_ isn't so easy. So download a fresh copy of the image file and
then try tweaking the memory sizes.

You can actually decrease the memory used by the image. I think you have to
use the system tracer. (That's a really slick tool that goes all the way
back to the original distribution. It can analyze your image; it can act as
a "super garbage collector" and even remove objects completely; if you write
enough extra code you can even use it to change the image in arbitrary ways.
For example, you may have changed some internal detail of the VM, like the
way pointers are stored. Therefore you'll need to change all the pointers
in the image. That's the sort of thing the system tracer is good for.)

Squeak is a direct descendant of the Alto's Smalltalk. Quite a bit of the
original Xerox code seems to be in there (you can tell if you look) though
there's some new code (e.g., for color) and some of the old code is gone
(e.g., some classes which let you write simulations). The virtual machine
which runs the Smalltalk bytecodes is completely rewritten.

Apple was one of the original licensees of the Smalltalk-80 project (along
with Tektronix, HP, and DEC); they had an experimental version of Smalltalk
running on the Mac and/or Lisa. I suspect Squeak happened when they dusted
off their old work. Unfortunately, you could still call Squeak "impure"
(because of the changes). I don't know of anything more pure, or of
anything that can simulate the NON-Smalltalk things the Alto did.

> It seems that in LISP, everything is an object too, BTW. What I found
> really amazing is that a name can have a function, a list, and a list of
> properties associated with it. And, of course, how simple it is from a
> low-level point of view.

Well, I wouldn't say LISP has as much of an idea of "object" as Smalltalk.
However, you can add objects (like CLOS does). But the idea that _is_ there
is very widespread.

The low-level simplicity is one of the reasons for LISP's popularity, I
think. Oddly, IIRC the simple syntax is an accident. Originally, there
were two formats for LISP code:

        - S-expressions (symbolic expressions, which are just lists),

        - M-expressions (meta-expressions, which look a bit more like
          a block-structured language).

I think M-expressions were invnented even while LISP existed only on paper.
The first LISP program could only handle S-expressions, though, and the
plans to have the computer understand M-expressions basically died out.

Actually, you might say there were three formats for LISP code -- some old
versions of LISP, including the original IBM one, would represent this:

        (f x y z...) f is a function, x y z... arguments

by this:

        f (x y z...)

or possibly this (I'm confused about the details):

        f ((x y z...))

but only at the top-level read/eval/print loop. That syntax is useful for
simple functions but painful for complicated ones. It's inconsistent too.
It died out. As I said, there have been a number of changes like that.

I just thought you might like to know that piece of trivia. :)

-- Derek
Received on Sat Apr 03 1999 - 23:18:31 BST

This archive was generated by hypermail 2.3.0 : Fri Oct 10 2014 - 23:31:39 BST