[Squeakland] Computer Language Definitions and Intelligibility

Alan Kay alan.kay at squeakland.org
Tue Jul 11 10:59:30 PDT 2006

Hi Greg --

Here's how I think of "extreme late-binding".

Suppose you are working on something and at some point you realize that 
you'd like to change it or some part of it. If you can do that pretty 
easily, then that change would be called "late-binding". If you can't do it 
easily, then whatever it was would be called "early-bound".  Some materials 
are erasable and some not. Some forms of images are more erasable and 
changeable on a computer than on standard physical media, etc.: they are 
more "late-bound".

For example, many operating systems and applications will require you to 
reboot your machine after certain kinds of updates. (I just got a new 
MacBook and was surprised that after it updated its apps from the net that 
it required a reboot -- this would be more expected on Windows than on a 
Mac.) These updates were "early-bound" and something major had to be done 
to rebind things.

Lots of programming and apps 40 years ago were early bound (one had to go 
back to source text, recompile, reload, rerun, etc.). Interactive systems 
started to try to late-bind as much as possible, so that a change by a user 
would be immediately reflected. Compare the late-bound changing of a 
picture in a graphics app or some text in a word processor or a Hypercard 
script to the to the much more tedious task of using a blog or wiki which 
requires the text to be typed one way, and only later do you see how it 
turned out. That this situation obtains today in the web is terrible (most 
especially since there is no good reason for this, just really bad design 
by the people who did the web browsers).

Lisp was one of the first programming languages to experiment with 
late-binding much more than had previously been done. And we took this up 
as one of our goals at Xerox PARC in the 70s: to see how much you could 
allow to be changed on the fly without killing the entire system. The 
Smalltalks went rather far in this direction (and could go further). 
(Squeak is a Smalltalk.)

For kids, we wanted them to have instant feedback on everything they did, 
so we took the Hypercard model and tried to remove its various modes, 
enrich the graphical landscape, and simplify the programming. We aimed at 
8-12 year olds, and Etoys works pretty well for them.

Etoys was a demo that was supposed to be reimplemented as a wider ranging 
system for children from about age 5 into high school. But this didn't 
happen, and the result is that Etoys remains mostly useful for the original 
age group. For example, it would be pretty frustrating for you to try your 
project in Etoys.

Squeak on the other hand is a full blown programming environment (like 
Java) and your project could definitely be done in it). But it is much less 
suited to the kind of user you say you are. (I think you sell yourself 
short a bit because anyone with a good command of writing skills -- and you 
certainly have these -- can learn to program in the general non-iconic 
forms used today.)

The biggest problem in programming is not so much the strange seeming 
nature of the raw materials, but that as things scale up, architecture 
dominates the materials. I.e. design starts to become more and more of a 
factor. And design is not learned in a day, even with the best materials 
and environment. The very best programmers and computer scientists I know 
-- who have absolutely no problems with raw materials -- still have great 
difficulties with design for most systems that are worth doing. This is one 
of the reasons we like to make things late-bound: we don't know what we are 
doing half the time, and are constantly finding out things that we needed 
to know earlier.

One analogy (that might be unsatisfying) is that many people have 
complained about the ad hoc nature of standard musical notation and of the 
layout of the piano keyboard (which leads to lots of scale patterns, etc.). 
And, it's true they are a pain when starting, and do turn lots of beginners 
away. Many suggestions have been made to improve both of these.

Once one gets into the stuff, one realizes right away that real fluency 
doesn't depend much on the actual notation or keyboard layout. This is 
because fluency in the human brain is done by flattening structures into 
thousands of special cases. There are real similarities here to reading and 
spelling. It helps to have phonetic spellings in the beginning, but they 
are completely bypassed by fluent readers.

In the case of designing computer stuff, there really isn't enough of a 
body of great design yet to provide thousands of applicable patterns, and 
so even seasoned professionals tend to flounder. And, again, better 
late-binding of everything (extreme late-binding) really helps us flounder 
our way towards some of our goals.



>I just started reading Alan Kay's forward to the book,
>and came across the phrase, "extreme late binding".
>This presented the same problem I always seem to encounter when trying to 
>learn any technical subject, from scratch.  Having no prior background in 
>the subject under discussion, I have no familiarity with the insider lingo 
>that inevitably exists in each and every text on the written on the subject.
>At this point, encountering a phrase which, to me, is unintelligible, I 
>have two options  -  close the article or do some research to find the 
>full meaning of the phrase.  I did so, using Google, and found quite a few 
>articles that use and refer to this phrase, but each and every one that I 
>looked at, though using the phrase, never defined the phrase in plain 
>English for the benefit of  the understanding of the uninitiated.
>This just strengthens my view that if endeavors like computer programming 
>are ever to pass out of the hands of the priesthood and into the hands of 
>the layman, then something's got to be done about the methods used to 
>transfer this knowledge.
>I still haven't got an inkling about the concept of "extreme late 
>binding", though I wish I did.
>Greg Smith
>Squeakland mailing list
>Squeakland at squeakland.org
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://squeakland.org/pipermail/squeakland/attachments/20060711/f7817ff8/attachment.htm

More information about the Squeakland mailing list