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
|