Kernel LISP - how low down can it go?
Henry G. Baker
Wed, 21 May 1997 23:33:49 -0700 (PDT)
> Mr Baker, I've read your papers and, as I said above, I'm bloody dense. I
> really don't understand what your immutable cons cells have as an advantage
> over, say, the spaghetti stack of way too long ago...
I agree with your sentiments wrt to Greenblatt's memo. However, I
believe that those goals are better achieved by taking advantage of
some hard-won experience that has happened in the mean-time. We care
a _lot_ more about distributed systems now then we did in 1977, and
immutable cons cells (and immutable objects in general) help enormously
in the efficient (and clean) implementation of these systems. I have
personally gone through CLTL1 and CLTL2 with a fine-toothed comb, and
there are a large number of ambiguities and problems that simply
go away once you have the concept of immutable cells and objects.
Why do we care about GC and run-time typing? Because it helps us
write programs that do the right thing, and when we violate the
rules, it lets us know. Typing certain objects as read-only is
simply the extension of these same ideas into areas that people have
found to be very important.
I think it would be crazy to simply re-create the Greenblatt Lisp
Machine. With all of its attractive features, it had some serious
flaws for a system for the 21st century. It was originally designed
around dynamic rather than static binding, it used a rather
heavyweight threading mechanism, it would not do
tail-recursion/tail-calling, and it did not utilize an OODB (it used a
more-or-less traditional byte-based file system). It was also not
particularly modular or portable as an operating system.
It is my belief that clean semantics leads to efficient, simple
implementations. If you get something right, you don't _have_ to hair
it up with bandaids, chickenwire and bubblegum. You'll have to excuse
me, but IMHO the Interlisp spaghetti stacks were such a hairball.
Spaghetti stacks provided a lot of power, but the lack of good
semantics made it very difficult to deal with. Scheme continuations,
on the other hand, are relatively clean -- whatever else you may think
www/ftp directory URL: