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 |
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 |
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 From:
[hidden email] [mailto:[hidden email]] On Behalf Of Greg Smith 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 |
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, _______________________________________________ Squeakland mailing list [hidden email] http://squeakland.org/mailman/listinfo/squeakland |
Free forum by Nabble | Edit this page |