The Early History of Smalltalk

初期 Smalltalk の歴史

Alan C. Kay
Apple Computer
kay2@apple.com.Internet

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. HOPL-II/4/93/MA, USA © 1993 ACM 0-89791-571-2/93/0004/0069...$1.50

Abstract

Most ideas come from previous ideas. The sixties, particularly in the ARPA community, gave rise to a host of notions about "human-computer symbiosis" through interactive time-shared computers, graphics screens and pointing devices. Advanced computer languages were invented to simulate complex systems such as oil refineries and semi-intelligent behavior. The soon-to-follow paradigm shift of modern personal computing, overlapping window interfaces, and object-oriented design came from seeing the work of the sixties as something more than a "better old thing." This is, more than a better way: to do mainframe computing; for end-users to invoke functionality; to make data structures more abstract. Instead the promise of exponential growth in computing /$/ volume demanded that the sixties be regarded as "almost a new thing" and to find out what the actual "new things" might be. For example, one would computer with a handheld "Dynabook" in a way that would not be possible on a shared mainframe; millions of potential users meant that the user interface would have to become a learning environment along the lines of Montessori and Bruner; and needs for large scope, reduction in complexity, and end-user literacy would require that data and control structures be done away with in favor of a more biological scheme of protected universal cells interacting only through messages that could mimic any desired behavior.

ほとんどのアイデアは過去からやってきます。 60年代、特に ARPA コミュニティは、対話型の時間分割コンピュータ、 グラフィックス画面、そしてポインティングデバイスを通じた「人とコ ンピュータとの共生」という概念を生み出しました。 石油精製や半知的処理などの複雑なシステムをシミュレートするために 高度なコンピュータ言語が発明されたのです。 続いて起こった近代的なパーソナルコンピューティング、オーバーラッ ピングウインドウインタフェース、そしてオブジェクト指向設計のパラ ダイムシフトは 60 年代に「古いものの改良」以上の何かを探し求めた 結果でした。 これは、メインフレームコンピュータの利用、エンドユーザによる機能 の実行、データ構造の抽象化等、ただの改良以上の出来事です。 急増する計算/費用/量の要求に対応する代わりに、60 年代とは「ほとん ど新しいもの」そして実際に「新しい物」とは何かをを見つけ出す事と 見なせます。 例えばハンドヘルドの「ダイナブック」によって、共有されたメインフ レームではありえないコンピュータの使い方が可能になるでしょう。何 百万もの潜在的なユーザのためには、ユーザインタフェースはモンテソ リとブルーナの手法に基づいた学習環境になるべきでしょう。そしてよ り大きな視点、複雑さの低減、エンドユーザの読み書き能力のために、 データと制御構造だけでなく、むしろあらゆる必要な振る舞いを模倣す るメッセージを通してだけ対話出来る守られた万能細胞のような生物学 的な手法が必要となるでしょう。

Early Smalltalk was the first complete realization of these new points of view as parented by its many predecessors in hardware, language and user interface design. It became the exemplar of the new computing, in part, because we were actually trying for a qualitative shift in belief structures--a new Kuhnian paradigm in the same spirit as the invention of the printing press-and thus took highly extreme positions which almost forced these new styles to be invented.

初期の Smalltalk は、このような新しい視点を初めて完全に現実化して、 ハードウェア、言語、そしてユーザインタフェースデザインにおいて多 くの後継を生み出しました。 これは新しいコンピューティングの先例となりました。その理由の一つ は、わたし達は信念の構造を質的に転換する事 -- 活版印刷の発明と同 じ精神を持つトーマス・クーン的新パラダイム -- を目指して、ほとんど強 制的に新しいスタイルを生み出すほどの極端に高い位置に自分たちを置 いていたからです。

Table of Contents

目次

Introduction 2
I. 1960-66--Early OOP and other formative ideas of the sixties
B220 File System
SketchPad & Simula
4
II. 1967-69--The FLEX Machine, an OOP-based personal computer
Doug Englebart and NLS
Plasma Panel, GRAIL, LOGO, Dynabook
6
III. 1970-72--Xerox PARC
KiddiKomp
miniCOM
Smalltalk-71
Overlapping Windows
Font Editing, Painting, Animation, Music
Byte Codes
Iconic Programming
12
IV. 1972-76--Xerox PARC: The first real Smalltalk (-72)
The two bets: birth of Smalltalk and Interim Dynabook
Smalltalk-72 Principles
The Smalltalk User Interface
Development of the Smalltalk Applications & System
Evolution of Smalltalk: ST-74, ooze storage management
Smalltalk and Children
17
V. 1976-80--The first modern Smalltalk (-76)
"Let's burn our disk packs"
The Notetaker
Smalltalk-76
Inheritance
More Troubles With Xerox
ThingLab
Apple Demo
29
VI. 1980-83--The release version of Smalltalk (-80)
Transformations
Coda
38
References Cited in Text 41
Appendix I: KiddieKomp Memo 45
Appendix II: Smalltalk-72 Interpreter Design 47
Appendix III: Acknowledgments 50
Appendix IV: Event Driven Loop Example 53
Appendix V: Smalltalk-76 Internal Structures 54

Introduction

導入

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.

今、私はこの導入を上空 35,000 フィートの飛行機内で書いています。 膝の上には、年末に 700 ドル以下で売られていた重さ 5 ポンドのノー トブックコンピュータ-- 1992 年時点での「暫定ダイナブック」 -- が あります。 これは平らでかっこ良く、高解像度のビットマップ画面、オーバーラッ プウインドウアイコン、ポインティングデバイスを持ち、十分な記憶領 域と計算能力があり、そしてこの最高のソフトウェアはオブジェクト指 向です。 高度なネットワークは備え付けで すでにワイヤレスネットワークのオプションもあります。 Smalltalk がこれで動いていて、私は現在の子供達との仕事で使うシス テムの一つとして使っています。 ある意味、これは(量的に) Dynabook 以上の物であり、またある意味で は(質的に)もう一歩でもあります。 大まかに言って、大体 60 年代末期に私が思い描いていたような物です。

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

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 it."
--Richard Hamming

"Memory and imagination are but two
words for the same thing."
--Thomas Hobbes

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