I'm writing this introduction in an airplane at 35,000 feet. On my lap is a
five pound notebook computer--1992's "Interim Dynabook"--by the end of the
year it sold for under $700. It has a flat, crisp, high-resolution bitmap
screen, overlapping windows, icons, a pointing device, considerable storage
and computing capacity, and its best software is object-oriented. It has
advanced networking built-in and there are already options for wireless
networking. Smalltalk runs on this system, and is one of the main systems I
use for my current work with children. In some ways this is more than a
Dynaboo (quantitatively), and some ways not quite there yet (qualitatively).
All in all, pretty much what was in mind during the late sixties.
Smalltalk was part of this larger pursuit of ARPA, and later of Xerox PARC,
that I called personal computing. There were so many people involved in each
stage from the research communities that the accurate allocation of credit for
ideas in intractably difficult. Instead, as Bob Barton liked to quote Goethe,
we should "share in the excitement of discover without vain attempts to claim
I will try to show where most of the influences came from and how they were
transformed in the magnetic field formed by the new personal computing
metaphor. It was the attitudes as well as the great ideas of the pioneers that
helped Smalltalk get invented. Many of the people I admired most at this
time--such as Ivan Sutherland, Marvin Minsky, Seymour Papert, Gordon Moore,
Bob Barton, Dave Evans, Butler Lampson, Jerome Bruner, and others--seemed to
have a splendid sense that their creations, though wonderful by relative
standards, were not near to the absolute thresholds that had to be crossed.
Small minds try to form religions, the great ones just want better routes up
the mountain. Where Newton said he saw further by standing on the shoulders of
giants, computer scientists all too often stand on each other's toes. Myopia
is still a problem where there are giants' shoulders to stand on--"outsight"
is better than insight--but it can be minimized by using glasses whose lenses
are highly sensitive to esthetics and criticism.
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.
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.
Philosophically, Smalltalk's objects have much in common with the monads of
Leibniz and the notions of 20th century physics and biology. Its way of making
objects is quite Platonic in that some of them act as idealisations of
concepts--Ideas--from which manifestations can be created. That the Ideas are
themselves manifestations (of the Idea-Idea) and that the Idea-Idea is
a-kind-of Manifestation-Idea--which is a-kind-of itself, so that the system is
completely self-describing-- would have been appreciated by Plato as an
extremely practical joke [Plato].
In computer terms, Smalltalk is a recursion on the notion of computer
itself. Instead of dividing "computer stuff" into things each less strong than
the whole--like data structures, procedures, and functions which are the usual
paraphernalia of programming languages--each Smalltalk object is a recursion
on the entire possibilities of the computer. Thus its semantics are a bit like
having thousands and thousands of computer all hooked together by a very fast
network. Questions of concrete representation can thus be postponed almost
indefinitely because we are mainly concerned that the computers behave
appropriately, and are interested in particular strategies only if the results
are off or come back too slowly.
Though it has noble ancestors indeed, Smalltalk's contribution is anew
design paradigm--which I called object-oriented--for attacking large problems
of the professional programmer, and making small ones possible for the novice
user. Object-oriented design is a successful attempt to qualitatively improve
the efficiency of modeling the ever more complex dynamic systems and user
relationships made possible by the silicon explosion.
"We would know what they thought
when the did
"Memory and imagination are but two
words for the same
In this history I will try to be true to Hamming's request as moderated by
Hobbes' observation. I have had difficulty in previous attempts to write about
Smalltalk because my emotional involvement has always been centered on
personal computing as an amplifier for human reach--rather than programming
system design--and we haven't got there yet. Though I was the instigator and
original designer of Smalltalk, it has always belonged more to the people who
make it work and got it out the door, especially Dan Ingalls and Adele
Goldberg. Each of the LRGers contributed in deep and remarkable ways to the
project, and I wish there was enough space to do them all justice. But I think
all of us would agree that for most of the development of Smalltalk, Dan was
the central figure. Programming is at heart a practical art in which real
things are built, and a real implementation thus has to exist. In fact many if
not most languages are in use today not because they have any real merits but
because of their existence on one or more machines, their ability to be
bootstrapped, etc. But Dan was far more than a great implementer, he also
became more and more of the designer, not just of the language but also of the
user interface as Smalltalk moved into the practical world.
Here, I will try to center focus on the events leading up to Smalltalk-72
and its transition to its modern form as Smalltalk-76. Most of the ideas
occurred here, and many of the earliest stages of OOP are poorly documented in
references almost impossible to find.
This history is too long, but I was amazed at how many people and systems
that had an influence appear only as shadows or not at all. I am sorry not to
be able to say more about Bob Balzer, Bob Barton, Danny Bobrow, Steve Carr,
Wes Clark, Barbara Deutsch, Peter Deutsch, Bill Duvall, Bob Flegal, Laura
Gould, Bruce Horn, Butler Lampson, Dave Liddle, William Newman, Bill Paxton,
Trygve Reenskaug, Dave Robson, Doug Ross, Paul Rovner, Bob Sproull, Dan
Swinehart, Bert Sutherland, Bob Taylor, Warren Teitelman, Bonnie Tennenbaum,
Chuck Thacker, and John Warnock. Worse, I have omitted to mention many systems
whose design I detested, but that generated considerable useful ideas and
attitudes in reaction. In other words, histories" should not be believed very
seriously but considered as "FEEBLE GESTURES PFF" done long after the actors
have departed the stage.
Thanks to the numerous reviewers for enduring the many drafts they had to
comment on. Special thanks to Mike Mahoney for helping so gently that I heeded
his suggestions and so well that they greatly improved this essay--and to Jean
Sammet, an old old friend, who quite literally frightened me into finishing
it--I did not want to find out what would happen if I were late. Sherri
McLoughlin and Kim Rose were of great help in getting all the materials
Permission to copy without fee all or part of this material is
granted provided that the copies are not made or distributed
for direct commercial advantage, the ACM copyright notice and
the title of the publication and its date appear, and notice is
given that copying is by permission of the Association for
Computing Machinery. To copy otherwise, or to republish, requires a
fee and/or specific permission.
© 1993 ACM 0-89791-571-2/93/0004/0069...$1.50
1999-2010 by Smalltalk.org, All Rights Reserved.