Smalltalk
アラン・ケイの「メッセージングのメタファにより、あらゆる決定の遅延を支援・徹底する(とどうなるか?)」という発想に基づき作られ、その実効性が試されたプログラミング言語とその処理系、統合化開発環境、あるいは仮想化されたGUI付き・オブジェクトベースの(つまり、現在主流のUnixライクなファイルシステムベースではない)OS。
1970年代は(8086を搭載しバッテリー駆動可能な可搬PC試作機「NoteTaker」専用のSmalltalk-78を除き)、約10年後の未来の一般的なPCのスペックを想定して1973年に作られた“タイムマシン”である「Alto」が主たるターゲットマシンであった。
Smalltalk-72、74、76、78、80といういろいろ異なる実装がある。大きく分けるとSmalltalk-72系(72、74)、Smalltalk-76系(76、78)、現在のSmalltalk(-80。商用のVisualWorks、OSSのSqueakやそこからフォークしたPharoなども含む)の3種類。Smalltalk-80についてはその他、ゼロックスと他社の共同開発純正環境(DEC、ヒューレット・パッカード、Tektronix、Sun、Apple)、企業独自の実装(旧IBM VisualAge Smalltalk~現VA Smalltalkや、GemStone/Sなど→The Rise and Fall of Commercial Smalltalk)やファン独自の実装(Little Smalltalk、GNU Smalltalk、Amber Smalltalkなど)などあまた。
当初のSmalltalk-72はケイのアイデアをもとに比較的忠実にダン・インガルスにより実装された。(インガルスら「そんなに言うなら君が思うように動く言語処理系の設計を書いてみろ(反語的に)」→ケイ「(Lisp同様)1ページあれば十分!…書いた!」→インガルス「わかった。実装してみる。…確かに動く。お前の勝ち。」)
Smalltalk-72のことを知ったカール・ヒューイットが、それのメッセージングのアイデアを非同期処理の問題解決に応用し、1973年に「アクター」を構想。後に定式化。今のSmalltalk(Smalltalk-80以降)からの影響かと勘違いすると訳ワカメになるので要注意。
まあとにかく、Smalltalk-72は今のSmalltalkとはまったく違う(今のSmalltalkに比較的よく似ているとされるRubyとももちろん違う)ので実際に遊んでみて欲しい→Smalltalk-72で学ぶOOPの原点 Advent Calendar 2019
ダン・インガルスはその後、1970年代を通じ(そして少し間を置いて1990年代のSqueakを加え)主だった特徴を有する複数世代の異なる“Smalltalk”の実装を担当。
いくつかの異なる“Smalltalk”を実装したダン・インガルスによる“Smalltalk”であるために満たすべき特徴みたいなもの(The Evolution of Smalltalkからの抜粋。DeepL訳を改変)
(前提として、“Smalltalk”は単なる言語や特定の処理系など指すのではなくゲシュタルト)
そのシステムはユーザーのあらゆる要求に即座に反応してくれる。
システム内のすべてはオブジェクトである。
オブジェクトはメッセージを送受信することで通信を行う。
すべてのオブジェクトは、それぞれの状態を持つことができる。
すべてのオブジェクトはクラスのインスタンスであり、クラスはオブジェクトの動作を規定する。
あるセッションでの作業結果が次のセッション再開時にすべて保存されていて作業を継続可能。
ストレージの自動管理。
ルールは単純で例外は極力なくしてある。
ここまでSmalltalkの基礎知識。以下にパターン、アジャイル等のキーパーソンやコミュニティに与えた影響を書く(とっかかりになるスタブを書いてください^^;sumim.icon)。
ユーザー等として接し影響を受けた著名人、キーパーソン(可能であれば影響の中身を類推)
That’s a great question...but the thing is, it’s not just the syntax and semantics of Smalltalk that was so revolutionary...it was the Smalltalk development experience.(それは素晴らしい質問ですが、Smalltalkの構文やセマンティクスだけではなく、Smalltalkの開発経験こそが革命的だったのです。<DeepL訳>)--グラディ・ブーチ
「だからその内容を知りたいから言語化して欲しい」「最先端のVSを使ってC#で開発するより優れているとは考えにくい」といったクソリプが付くところまでがテンプレート
Smalltalk-72
カール・ヒューイット(Actor induction and meta-evaluation <PDF>])
Smalltalk-76
トリグヴェ・リーンスカウク(Welcome to the pages of Trygve M. H. Reenskaug)
スティーブ・ジョブズ(Smithsonian Institution - Oral and Video Histories - Steve Jobs - NeXT Computer Software)
アラン・ボーニング(ThingLab in Smalltalk-78 by Alan Borning (JavaScript VM))
Smalltalk-80
ジョー・アームストロング(A History of Erlang)
デイヴ・トーマス (Travels With Smalltalk)
アレン・ワーフスブラック(Smalltalk-87)
ラルフ・ジョンソン(Smalltalk-87)
ケント・ベック(“but in Smalltalk I have more options within reach. The greater my knowledge, the freer I feel. It's like walking under a Montana sky instead of being jostled down a narrow, one-way corridor.(が、Smalltalkではより多くの選択肢が手の届くところにあります。知識が増えれば増えるほど、自由な気分になります。それは、狭い一方通行の廊下をゴチャゴチャにされるのではなく、モンタナの空の下を歩いているようなものです。 <DeepL訳>)”)
ウォード・カニンガム(“Plumbin' was created by Ward Cunningham back around 1985 in Tektronix Smalltalk as an exercise to show how much can be done with MVC, and how easily. ”)
マーチン・ファウラー(Martin Fowler's Bliki (ja) - C3)
ランディ・ブーチ(“I wrote the first version of Rational's modeling tools in Smalltalk.”, “ I worked with OOCL to build out a Smalltalk system to manage their container fleet...it was so much fun.”)
ジェフ・サザーランド(The Smalltalk Manifesto: Avoiding RoadKill on the InfoBahn)
青木 淳(オブジェクト指向システム分析設計入門)
番外編
角谷信太郎(VisualAge for Smalltalkで実装されたVisualAge for Javaを使用する中で、“ワークスペース”などのSmalltalk的なものをそれとは意識せずに会得した!)間接的Smalltalk-アハ-体験パターン
ロブ・パイク(高機能化Altoである「Dorado」でSmalltalkを使ったが、あまり適切な指導を受けられず、その感想は批判的で~一部は的外れ・誤解に基づいており~いわゆる「アハ体験」的ではなかった模様^^;→Notes from a 1984 trip to Xerox PARC)Smalltalk体験アンチパターン