Closures

shane at shaneroberts.com shane at shaneroberts.com
Mon Feb 3 03:27:22 UTC 2003


Since becoming re-interested in Smalltalk (after 20 years) a few 
days ago, I keep running across references to "closures", "block 
closures",  and "block closures in modern Smalltalk".  Can anyone 
point me to information explaining these terms/issues?

Also, for years in the 80s and early 90s, any references I read 
regarding Smalltalk stated that it was too inefficient and not useful 
for practical applications.  I once flew to Los Angeles where I had 
an appointment to evaluate a Xerox Dolphin workstation running 
Smalltalk.  This was about 1983, and I believe the Dolphin was 
priced at upwards of $100,00.00.  I requested a small example of 
Smalltalk programming.  The representative was tentative about 
what sort of example to show me, so I said, "How about a simple 
loop that prints numbers from 1 to 1000."  So a loop was written 
and executed.  It never got to 1000, it was TOO SLOW!  That 
about cinched it for me.

I also studied the Smalltalk implementation details published at that 
time (Addisson-Wesley whatever), actually I got pre-publication 
editions of the book for some reason.  I found it fascinating but felt 
there were to many layers to the message processing (inheritance 
hierarchy), for the system to perform efficiently enough.  The other 
thing that always bugged me was the "image".  It all seemed so 
tightly coupled, I couldn't figure out  how you would "share 
programs" or separate out "data files."

I'm sure this is all ancient history to those on the list.  These issues 
have long been debated and put to rest, but it is amusing reading 
about "how modules should work" after all this time.  My first 
impression about the image file was apparently on target, since it is 
still biting your ass after all these years.

Anyway, all this aside, I ran Croquet today, which kept crashing.  
Apparently the network collaboration connection software isn't 
working for Windows yet.  But I was able to run all the built in 
"toys", that are from Squeak.  So I did an experiment.  I ran 
everything I could in the Morphic world, all at once.  Spinning 3D 
block, ant hill, termites, chess, crawling blob, music synthesizer, 
clock, and mp3 player playing a symphony.  It all worked 
amazingly.  No crashing, skipping, wobbling.  The frame rate 
dropped to 50 ms, but everything continued to work impressively.  I 
let it run for hours.

I was mightily moved.

I have also done the basic programming tutorials.  The first tutorial 
I did I think locked up my image.  The tutorial said "pick any 
category, like Kernel-Object" for example.  So I did but when I 
wrote "Hello World" my image went into never never land.

But then I did the banking tutorial, and the animation, and it worked 
great.  So easy.  And then in the animation tutorial I was 
reprogramming the object, during its execution.  Mind blowing.

I have been researching software systems and languages during 
the last year, looking for the right platform to build a "really" user 
friendly and "personal" software environment for naïve computer 
users (most people).  I have looked at Forth, Plan9, Inferno, Java, 
Python, the Unices (I have programmed in C and Unix for 20 
years), and pulling my hair out trying to find a starting point for 
something portable, reliable, and "doable."  The nasty complexities 
of trying to find a reasonable starting place, or platform have been 
overwhelming.  But now with Squeek I think I may have finally 
stumbled onto it.

Squeak feels like what I was hoping Forth and Smalltalk would be 
20 years ago.  When I got a Mac (pre-ordered before they were on 
the street), I was dissappointed when it did not even do multi-
tasking.  I was already programming for Unix, so I could not 
comprehend a multi-window system, that did not multi-task, what's 
the point?  More ancient history...

I've been waiting for the computer industry to grow up for 25 years, 
and we are still using hand crank starters, spark advance knobs on 
the steering wheel, manual chokes, and we have to wear driving 
gloves, goggles, and helmets before we step on the gas.

Now I'm getting too old, I can't wait any more.  Something has got 
to be done!!!!

So we'll see if I can commit to Squeak and get serious with it...

Thanks,
Shane




More information about the Squeak-dev mailing list