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.
|