[squeak-dev] Smalltalk pre-80 (circa 1975)

Casey Ransberger casey.obrien.r at gmail.com
Wed Dec 14 04:27:45 UTC 2011


Below. 

On Dec 13, 2011, at 8:01 PM, "David T. Lewis" <lewis at mail.msen.com> wrote:

> On Tue, Dec 13, 2011 at 06:05:46PM -0800, Casey Ransberger wrote:
>> I found something which may be of interest to the historically inclined. I had yet to encounter a substantial amount of code from any period before Smalltalk started looking like Smalltalk-80, until tonight. Not sure how I found it, as I forgot all about what I was doing when I did (easily distracted by shiny things.)
>> 
>> This looks like a pot of gold where value is what satisfies curiosity. 
>> 
>> http://www.bitsavers.org/pdf/xerox/
>> 
>> There's code from '75 (if the docs are labeled accurately) in the Smalltalk directory... but I'm currently a bit distracted by the Alto directory:)
>> 
>> Thought I'd share. 
> 
> Thanks for this!
> 
> And as long as you are digging through those old BCPL references
> in the Alto directory, you will probably want to get an up to date
> manual and compiler, which are available from Martin Richards'
> home page at http://www.cl.cam.ac.uk/~mr10/index.html. The manual
> is worth a look, see http://www.cl.cam.ac.uk/users/mr/bcplman.pdf.
> 
> Modern Squeak translates itself into C, but the early Smalltalk
> machines appear to have been hosted on BCPL. C works perfectly
> well as an assembly language for the VM, but BCPL would work
> nicely also, and to me BCPL has a nice synergy with Squeak in
> several ways. First, like Squeak it allows complex systems to be
> built on top of a rediculously small set of core concepts and syntax
> rules.  Second, like Squeak it supports (but is not limited to)
> a bytecode interpreted virtual machine running on top of a memory
> system that essentially amounts to a big array of 32-bit (or 16-bit
> or 64-bit etc) memory words. In Squeak, the object memory is built
> on top of the big array of 32-bit memory words, and in BCPL the
> same is done, except that the memory words represent data and
> pointers and such.
> 
> If I had an endless supply of free weekends for Sunday Squeaking,
> I would want to make a BCPLCodeGenerator to go along with the
> current CCodeGenerator in VMMaker, such that we could generate
> a Squeak VM that would run on top of Martin Richards' BCPL runtime.
> And on the flip side, I would want to make an interpreter for
> the Cintcode bytecode that can be generated from BCPL. It would
> be nice to see a Squeak running on top of Martin Richards' BCPL
> and Cintpos runtime, and it would be nice to see BCPL compilers,
> programs, and the Cintpos runtime hosted on Squeak.
> 
> In case you may be thinking that BCPL is a dead language (after
> all, that is what people have been saying about Smalltalk for a
> long time), I can personally confirm that BCPL is currently in
> use in a little-known but significant real-time industrial control
> application at a major industrial corporation. The application is
> fast, reliable, and flexible, and to this day it remains a great
> improvement over its successors.
> 
> Dave 

Glad you enjoyed the find! Software archeologists the list over should be celebrating over bullwhips and fedoras:) because this is just cool. In the PARC directory, I was just reading a memo from Butler Lampson from '72. Score!

Wrt BCPL, I don't speak it. I do remember it piqued my interest when I read somewhere (Back to the Future?) that Dan Ingalls mentioned having made use of prior experience translating between BCPL and another language (can't remember which.) I mention this because it's exactly the sort of thing you're talking about above:)

I should check out BCPL. I didn't know much about it. I'd heard it was a C precursor, but I didn't know that it had an interpreter in addition to a compiler. That strikes me as quite forward-thinking. Your pitch on the elegance of its concepts and syntactic forms is of course well regarded. One of these days when I get a chance, I'll look at it. 

Do you follow what's going on at VPRI? They're currently in the midst of a shootout between two low level languages they've designed as bottom-of-stack, Nothing and Maru. I must admit being in the Maru camp (it's a Lisp that spits out machine code, it's tiny and pretty and the code is easy to hack on) but I must also admit that I haven't really looked into Nothing (it's a BCPL, which to me just meant "C-ancestor," so I ignored it. Probably shouldn't have.)

Thanks for your thoughtful reply. 





More information about the Squeak-dev mailing list