straight up

"The big shift that consolidated these ideas into a powerful theory and long-lived examples came because the focus was on children. "

Smalltalk balloon  

previous next

Click to play video About the Smalltalk operating system

Smalltalk <1971>

In the summer of '71 I created a language called "Smalltalk" – as in "programming should be a matter of smalltalk" and "children should program in smalltalk." The name was also a reaction again the "IndoEuropean god theory" where systems were named Zeus, Odin, and Thor, and hardly did anything. I figured that "Smalltalk" was so innocuous a label that if it ever did anything nice people would be pleasantly surprised.

All of the elements eventually used in the Smalltalk user interface were already to be found in the sixties – as different ways to access and invoke the functionality provided by an interactive system. The two major centers of ideas were Lincoln Labs and Rand corporation – both ARPA funded.

I was less interested in programs as algebraic patterns than I was in a clear scheme that could handle a variety of styles of programming. Much of the pondering during this state of grace (before any workable implementation) had to do with trying to understand what "beautiful" might mean with reference to object-oriented design. I had expected that the new Smalltalk would be an iconic language.

One part of the perceived beauty of mathematics has to do with a wondrous synergy between parsimony, generality, enlightenment, and finesse. For example, the Pythagorean Theorem is expressable in a single line, is true for the infinite number of right triangles, is incredibly useful in understanding many other relationships, and can be shown by a few simple but profound steps. For example, we can define universal machine languages in just a few instructions that can specify anything that can be computed. Most of these we could not call beautiful, in part because the amount and kind of code that has to be written to do anything interesting is so contrived and turgid. A simple and small system that can do interesting things also needs a "high slope" – that is a good match between the degree of interestingness and the level of complexity needed to express it.