プログラミング
Smalltalkの初期の歴史 (1993年)
The Early History of Smalltalk (1993) (worrydream.com)
要約
この記事は、アラン・ケイが1993年に執筆したSmalltalkの初期の歴史に関する論文です。1960年代のARPAコミュニティにおける人間とコンピュータの共生、インタラクティブなタイムシェアリング、グラフィック表示、ポインティングデバイスといった概念が、パーソナルコンピューティング、ウィンドウインターフェース、オブジェクト指向設計のパラダイムシフトへとどう繋がったかを解説しています。Smalltalkは、これらの新しい視点をハードウェア、言語、ユーザーインターフェースデザインにおける多くの先行技術から引き継ぎ、コンピュータの可能性を質的に変えることを目指した最初の包括的な実現例として位置づけられています。
全文翻訳
オリジナルのPDF / 修正を行う
Smalltalkの初期の歴史
Alan C. Kay
Apple Computer
kay2@apple.com
インターネット#
商業的な利益を直接目的としない限り、この資料の全部または一部をコピーする許可は、コピーが商業的な利益のために作成または配布されない場合、ACMの著作権表示、出版物名、およびその日付が表示され、コピーがAssociation for Computing Machineryの許可によるものであるという通知が与えられた場合に、手数料なしで認められます。それ以外の場合にコピーしたり、再出版したりするには、手数料および/または特定の許可が必要です。
HOPL-II/4/93/MA, USA
© 1993 ACM 0-89791-571-2/93/0004/0069...$1.50
要約
ほとんどのアイデアは以前のアイデアから生まれます。1960年代、特にARPAコミュニティでは、インタラクティブなタイムシェアリングコンピュータ、グラフィック画面、ポインティングデバイスを通じた「人間とコンピュータの共生」に関する多くの概念が生まれました。石油精製所や半知的な振る舞いのような複雑なシステムをシミュレートするために高度なコンピュータ言語が発明されました。その後すぐに訪れたモダンなパーソナルコンピューティング、オーバーラップするウィンドウインターフェース、オブジェクト指向設計のパラダイムシフトは、1960年代の仕事を単なる「より良い古いもの」以上のものとして見たことから生まれました。つまり、メインフレームコンピューティングをより良く行う方法、エンドユーザーが機能を利用するためのより良い方法、データ構造をより抽象化するためのより良い方法以上のものとしてです。代わりに、コンピューティング/$/ボリュームの指数関数的な成長の約束は、1960年代を「ほぼ新しいもの」として扱い、実際の「新しいもの」が何であるかを見つけ出すことを要求しました。例えば、ハンドヘルドの「Dynabook」で、共有メインフレームでは不可能な方法で計算することになるでしょう。数百万人の潜在的なユーザーは、ユーザーインターフェースがモンテッソーリやブルーナーの線に沿った学習環境になる必要があることを意味しました。そして、大規模なスコープ、複雑さの軽減、エンドユーザーの識字能力の必要性は、データと制御構造を、メッセージの交換のみを通じて相互作用する保護された普遍的なセルのより生物学的なスキームに置き換えることを要求しました。初期のSmalltalkは、ハードウェア、言語、ユーザーインターフェースデザインにおける多くの先行技術に育まれた、これらの新しい視点の最初の完全な実現でした。それは新しいコンピューティングの模範となりました。なぜなら、私たちは印刷機の発明と同様の精神で、新しいクーーンのパラダイムである信念構造の質的な変化を実際に目指していたからです。そして、非常に極端な立場をとったため、これらの新しいスタイルを発明せざるを得なくなりました。
目次
はじめに 2
I. 1960-66 — 初期OOPと1960年代のその他の形成的なアイデア 4
B220 ファイルシステム
SketchPad & Simula II
II. 1967-69 — FLEX Machine、OOPベースのパーソナルコンピュータ 6
Doug EnglebartとNLS
Plasma Panel, GRAIL, LOGO, Dynabook III.
III. 1970-72 — Xerox PARC 12
KiddiKomp
miniCOM
Smalltalk-71
オーバーラップするウィンドウ
フォント編集、ペイント、アニメーション、音楽
バイトコード
アイコンプログラミング
IV. 1972-76 — Xerox PARC: 最初の実際のSmalltalk (-72) 17
2つの賭け: Smalltalkの誕生とInterim Dynabook
Smalltalk-72の原則
Smalltalkのユーザーインターフェース
Smalltalkアプリケーションとシステムの開発
Smalltalkの進化: ST-74, oozeストレージ管理
Smalltalkと子供たち
V. 1976-80 — 最初のモダンなSmalltalk (-76) 29
「ディスクパックを燃やそう」
Notetaker
Smalltalk-76
継承
Xerox ThingLabとのさらなる問題
Appleデモ
VI. 1980-83 — Smalltalk (-80) のリリースバージョン 38
変容
結び
参考文献
本文中に引用された参考文献 41
付録 I: KiddiKompメモ 45
付録 II: Smalltalk-72インタープリタ設計 47
付録 III: 謝辞 50
付録 IV: イベント駆動ループの例 53
付録 V: Smalltalk-76内部構造 54
— Dan Ingalls, Adele Goldberg、そしてXerox PARC LRG gangの皆へ
— Dave Evens, Bob Barton, Marvin Minsky, Seymour Papertへ
— SKETCHPAD, JOSS, LISP, そして1960年代の4つの偉大なプログラミング構想であるSIMULAへ
はじめに
私はこのはじめにを35,000フィート上空の飛行機の中で書いています。私の膝の上には5ポンドのノートブックコンピュータがあります—1992年の「Interim Dynabook」—年末には700ドル未満で販売されました。それはフラットで鮮明な高解像度ビットマップスクリーン、オーバーラップするウィンドウ、アイコン、ポインティングデバイス、かなりのストレージとコンピューティング能力を備えており、その最高のソフトウェアはオブジェクト指向です。高度なネットワーキングが組み込まれており、ワイヤレスネットワーキングのオプションもすでに存在します。Smalltalkはこのシステム上で動作し、子供たちとの現在の仕事で私が使用する主要なシステムの一つです。ある意味ではこれはDynabook以上(量的に)であり、ある意味ではまだそこまでではありません(質的に)。全体として、1960年代後半に思い描いていたものとほぼ同じです。
Smalltalkは、私がパーソナルコンピューティングと呼んだ、ARPA、そして後のXerox PARCのより大きな追求の一部でした。研究コミュニティの各段階には非常に多くの人々が関わっていたため、アイデアの正確な功績配分は非常に困難です。代わりに、Bob Bartonがゲーテを引用するのが好きだったように、「優先権を主張する無益な試みなしに、発見の興奮を共有すべき」です。私は、ほとんどの影響がどこから来たのか、そしてそれらが新しいパーソナルコンピューティングのメタファーによって形成された磁場の中でどのように変容したのかを示そうとします。Smalltalkの発明を助けたのは、先駆者たちの態度と偉大なアイデアでした。この時期に私が最も尊敬していた多くの人々—Ivan Sutherland、Marvin Minsky、Seymour Papert、Gordon Moore、Bob Barton、Dave Evans、Butler Lampson、Jerome Brunerなど—は、彼らの創造物が相対的な基準では素晴らしいものの、越えなければならない絶対的な閾値にはほど遠いという素晴らしい感覚を持っていたようです。小賢しい人々は宗教を形成しようとしますが、偉大な人々はただ山を登るより良い道を探求するだけです。ニュートンが巨人の肩に乗ってより遠くを見たと述べたように、コンピュータ科学者はあまりにもしばしば互いのつま先を踏んでいます。巨人の肩に乗るべき場所—「外見」は「洞察」よりも優れています—でさえ、まだ近視眼は問題ですが、美的感覚と批判に非常に敏感なレンズを持つ眼鏡を使用することで最小限に抑えることができます。
プログラミング言語は、命令型、関数型、論理ベース、問題指向型など、さまざまな方法で分類できます。しかし、それらはすべて「機能の集合体」または「スタイルの結晶化」のいずれかであるように思われます。COBOL、PL/1、Adaなどは最初の種類に属します。LISP、APL—そしてSmalltalk—は2番目の種類です。集合的な言語はすべて委員会によって開始されたように見え、結晶化言語は一人の個人によって開始されたように見えるのは、おそらく偶然ではありません。
Smalltalkのデザイン—そして存在—は、私たちが記述できるすべてが、状態とプロセスを内部に隠し、メッセージの交換を通じてのみ扱われることができる、単一の種類の行動的構成要素の再帰的な構成によって表現できるという洞察によるものです。哲学的には、Smalltalkのオブジェクトは、ライプニッツのモナドや20世紀の物理学および生物学の概念と多くの共通点があります。そのオブジェクトの作り方は、プラトン的であり、そのうちのいくつかは概念—イデア—の理想化として機能し、そこから顕現が作成されます。イデア自体が顕現(イデア・イデアの)であり、イデア・イデアは顕現・イデアの一種—それ自体の一種であるため、システムは完全に自己記述的である—ということは、プラトンが極めて実用的なジョークとして理解したでしょう[プラトン]。コンピュータの観点から見ると、Smalltalkはコンピュータという概念自体の再帰です。プログラミング言語の通常の道具であるデータ構造、手続き、関数のように、「コンピュータの事柄」を全体よりも弱いものに分割する代わりに—各Smalltalkオブジェクトはコンピュータ全体の可能性の再帰です。したがって、その意味論は、非常に高速なネットワークで接続された何千ものコンピュータを持っているようなものです。具体的な表現の問題は、主にコンピュータがどのように振る舞うかに関心があるため、ほぼ無期限に延期できます。