Computer Language Definitions and Intelligibility

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

Computer Language Definitions and Intelligibility

GregSmith
I just started reading Alan Kay's forward to the book, 

SQUEAK:
OBJECT-ORIENTED
DESIGN WITH
MULTIMEDIA
APPLICATIONS 

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
[hidden email]
http://squeakland.org/mailman/listinfo/squeakland
Reply | Threaded
Open this post in threaded view
|

Re: Computer Language Definitions and Intelligibility

Jecel Assumpcao Jr
Greg Smith wrote:
> ["extreme late binding"]

This is a very important concept in computing. So much so that in a five
lesson "course" I am planning most of one of the lessons is dedicated to
this. Sadly, if you ask most computer science graduates about this they
probably won't know the answer either.

Supposing that neither "extreme" nor "late" are giving you any problems,
I will focus on "binding". In computing we use that word to indicate
that two things have become associated somehow. Imagine you are setting
up a new company and sit down to write the following organizational
chart:

President: ??
Sales: John
Engineering: me
Accounting: ??
Marketing: Sally

What we have here is a set of bindings between jobs and people. In the
case of the first job the binding actually hasn't been done yet, so we
can say that the job of president is "unbound" so far. For the second
case we can say that the job of sales is "bound" to John.

Now imagine you are writing a program to do some statistics for the
grades in your class. Since you have 18 students you might write at some
point

 .... 1 to: 18 do: ...

And everything will work just fine. Until you give the program to a
friend that has a class of 21. Or your own class grows or shrinks. So
you might want to change your program so that the size of the class is
defined every time the program is run. This requires adding the concept
of a "variable". Imagine we have such a variable with the name
"classSize" (this odd kind of spelling is very popular in Smalltalk)
which is bound to the size of the class when the program starts to run.
We can rewrite that program fragment to

.... 1 to: classSize do: ...

Now your friend can use your program just fine. In the first version of
the program the size of the class was bound very early - when the
program was still being written. In the second version the size of the
class was bound later - when the program starts to run. Changing
constants to variables and generally binding things later rather than
earlier tends to make programs more flexible and powerful.

We learn new things as time goes on and early binding forces us to make
choices which might not be right later on. If you haven't decided on a
president and accounting person yet it might be because you hope to talk
to more people and find out things you don't know right now. If you can
delay the decision you will probably be happier with your final choice
than if you are forced to pick somebody today.

I hope this helps,
-- Jecel
_______________________________________________
Squeakland mailing list
[hidden email]
http://squeakland.org/mailman/listinfo/squeakland
Reply | Threaded
Open this post in threaded view
|

Re: Computer Language Definitions and Intelligibility

Ron Teitelbaum-2
In reply to this post by GregSmith

Hi Greg,

 

I’ll give it a shot to try and explain binding for you.  I saw your other questions also but will leave them for more experienced eToy developers.  You might want to also look into www.squeak.org, for the squeak-dev mailing list (under community), or even the beginners list, although your questions about anitaliasing and onion skinning and animation may be better suited for squeak-dev then the beginners list.  I’m sure there will be some good suggestions coming on this list also.

 

Ok to your question of extreme late binding.

 

If you wanted to animate a sequence you would draw your background, then design your cells, draw them up, color them and then film them in order.

 

This would be an example of static binding.  Everything is designed and created before filing starts.

 

If you had a sequence where while the film was running everything was changeable that would be dynamic binding.  The system running the sequence doesn’t need to know before it runs what it is going to do.

 

Squeak uses extreme late binding and you can see that because the program is actually running while you use it.  You are using squeak to program squeak.  This is much different then the programs where you write code, compile it (which does the binding and checks for errors), and then run the code.

 

I hope that helps,

 

Ron Teitelbaum

President / Principal Software Engineer

US Medical Record Specialists

[hidden email]

 

 


From: [hidden email] [mailto:[hidden email]] On Behalf Of Greg Smith
Sent: Friday, July 07, 2006 4:29 PM
To: [hidden email]
Subject: [Squeakland] Computer Language Definitions and Intelligibility

 

I just started reading Alan Kay's forward to the book,

 

SQUEAK:

OBJECT-ORIENTED

DESIGN WITH

MULTIMEDIA

APPLICATIONS

 

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
[hidden email]
http://squeakland.org/mailman/listinfo/squeakland
Reply | Threaded
Open this post in threaded view
|

Re: Computer Language Definitions and Intelligibility

Alan Kay
In reply to this post by GregSmith
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.

Cheers,

Alan


I just started reading Alan Kay's forward to the book,

SQUEAK:
OBJECT-ORIENTED
DESIGN WITH
MULTIMEDIA
APPLICATIONS

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
[hidden email]
http://squeakland.org/mailman/listinfo/squeakland

_______________________________________________
Squeakland mailing list
[hidden email]
http://squeakland.org/mailman/listinfo/squeakland