Alan Kay: The Early History of Smalltalk

by way of lispmeister
(PDF scan or HTML)

Smalltalk's design--and existence--is due to the insight that everything we can describe can be represented by the recursive composition of a single kind of behavioral building block that hides its combination of state and process inside itself and can be dealt with only through the exchange of messages.

Really double-extra good.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Design by Committee

Programming languages can be categorized in a number of ways: imperative, applicative, logic-based, problem-oriented, etc. But they all seem to be either an "agglutination of features" or a "crystallization of style." COBOL, PL/1, Ada, etc., belong to the first kind; LISP, APL-- and Smalltalk--are the second kind. It is probably not an accident that the agglutinative languages all seem to have been instigated by committees, and the crystallization languages by a single person.

I don't think this is really true. I think the conclusion is a generalization we would be wise to avoid (many ugly languages were designed by individuals, for example). I also think the historical record should be set straight. Ada, for example, was essentially design by Ichbiah. Ada95 was primarily designed by Tucker Taft. The fact that both had people wokring for them (or with them) shouldn't obscure this fact. If you must hate Ada, find other reasons to do so.

I think the Scheme story is rather similar.

Design by Comitee

When I hear this kind of generalization I always remember that C# is mostly a work of a single designer while Haskell was created by many hands.

C#

C# is mostly a work of a single designer...

James Gosling? I don't think that this is true; didn't Anders Heilsberg contribute a bit also? ;-)

Patterns

The connection to literacy was painfully clear. It isn't enough to just learn to read and write. There is also a literature that renders ideas. Language is used to read and write about them, but at some point the organization of ideas starts to dominate mre language abilities. And it help greatly to have some powerful ideas under one's belt to better acquire more powerful ideas [Papert 70s]. So, we decided we should teach design. And Adele came up with another brillian stroke to deal with this. She decided that what was needed was in intermediary between the vague ideas about the problem and the very detailed writing and debugging that had to be done to get it to run in Smalltalk. She called the intermediary forms design templates.

Education

Should we even try to teach programming? I have met hundreds of programmers in the last 30 years and can see no discernable influence of programming on their general abiltity to think well or to take an enlightened stance on human knowledge. If anything, the opposite is true. Expert knowledge often remains rooted in the environments in which it was first learned--and most metaphorical extensions result in misleading analogies. A remarkable number off artists, scientists, philosophers are quite dull outside of their specialty (and one suspects within it as well). The first siren's song we need to be wary of is the one that promises a connection between an interesting pursuit and interesting thoughts. The music is not in the piano, and it is possible to graduate Julliard wiothout finding or feeling it.

Cleaned-up version

How nice to see this paper in HTML where it doesn't hurt my poor aging eyes anymore. Watch out though that the HTML is missing the appendices and many of the figures and it's got errors in practically every paragraph. I've gone through it fixing the latter problem (probably introducing some new errors in the process) here -- it'd be great if someone also did the appendices and figures, because it's a wonderful paper.

Favorite Quote

That article was well worth the read.

I thought the comment about how strong paradigms have a tendency to 'eat their young' was an interesting view point.

I thought I'd also quote my favorite paragraph from it:
A twentieth century problem is that technology has become too "easy". When it was hard to do anything whether good or bad, enough time was taken so that the result was usually good. Now we can make things almost trivially, especially in software, but most of the designs are trivial as well. This is inverse vandalism: the making of things because you can. Couple this to even less sophisticated buyers and you have generated an exploitation marketplace similar to that set up for teenagers. A counter to this is to generate enormous disatisfaction with one's designs using the entire history of human art as a standard and goal. Then the trick is to decouple the disatisfaction from self worth--otherwise it is either too depressing or one stops too soon with trivial results.