過去

表面的には、Smalltalk はオブジェクト指向型、動的型に分類されるリフレクティブ プログラミング言語です。Smalltalk の作成者 Alan C. Kay は、その著書 『The Early History of Smalltalk』 の中でプログラミング言語を2つのグループ、「機能が凝集したもの」と「スタイルが結晶化したもの」に分類しています。

「COBOL、PL/1、Ada などは最初の種類、LISP、APL、そしてSmalltalk は2番目の種類になります。Smalltalk の設計 – および存在 – は、我々が記述できるものはすべて、状態とプロセスの組み合わせを内に含む1種類の動作的ビルディングブロックの再帰的構成物で表現でき、メッセージ交換を通してのみ処理できるという洞察に基づいています。」

このような「ビルディングブロック」がオブジェクト指向型プログラミングの「オブジェクト」です。さらに Kay は次のように述べています。

「コンピューターの言葉で言えば、Smalltalk はコンピューターそのものの概念への再帰です。「コンピューターの要素」を、データ構造、プロシージャ、関数など、全体より力の弱いものに分割するのではなく、Smalltalk の各オブジェクトはコンピューターの可能性全体への再帰なのです。したがって、Smalltalk のセマンティクスは、非常に高速なネットワークに接続された無数のコンピューターが存在するようなものです。」

Kay は Smalltalk を、プロフェッショナルなプログラマーが大きな問題をより簡単に解決することができる一方で、初心者ユーザーが小さな問題にも取り組める「新しい設計パラダイム」と見ています。「オブジェクト指向型の設計は、半導体の爆発的な普及によって可能になった、これまでになく複雑で動的なシステムとユーザーとの関係をモデリングするときの効率性を、質的に向上させようとして成功した試みです」。言い換えれば、1970年代の Smalltalk の開発は、単なる新しいプログラミング言語の作成以上の意味を持っていました。Smalltalk はオブジェクト指向型プログラミング(OOP)時代の先駆けとなり、今日のコンピューティングの様相を変える一連のイノベーションを発表し、パーソナルコンピューターが登場するきっかけを作りました。

この言語は当初、Smalltalk-80 として一般リリースされ、それ以降広く使用されました。Smalltalk とオブジェクト指向型プログラミングは、1981年8月号の『Byte』誌によって多くの読者に紹介されました。今日まで、Smalltalk や Smalltalk に類似する言語は Cincomなどの企業によって現在も積極的に開発されており、忠実なユーザーコミュニティが設立されています。ANSI Smalltalk は1998年に承認され、Smalltalk の標準バージョンとなっています。Cincom は、1999年の VisualWorks の買収により Cincom の Smalltalk を発表しました。この製品ラインには、ObjectShare の VisualWorks だけでなく Smalltalk 市場向けの Cincom の既存の ObjectStudio アプリケーション開発環境も含まれています。

オリジナルコードを大胆にも1枚分の言語に記述した言語としては、なかなか悪くない話です。

「コンピューター時代の夜明け」
1970年半ば、Xerox社はカリフォルニア州Palo Altoにまったく新しい研究所を開設しました。Palo Alto研究所(PARC)は、Xeroxが買収したコンピューター関連会社の研究所として設立されました。PARCは、今日のコンピューティングのイノベーションの中でも、パーソナルコンピューター誕生の地以上の場所になったのです。

Smalltalkで動作するAltoには、最新のユビキタスパーソナルコンピューターの多くの要素が含まれており、私達が現在恩恵を受けている次のような多くの要素が取り込まれ統合されました。

  • マウス
  • コンピューター生成カラーグラフィック
  • ウィンドウとアイコンを特徴とするグラフィカルユーザーインタフェース(GUI)
  • WYSIWYGテキストエディター
  • InterPress(解像度非依存のグラフィカルページ記述言語でありPostScriptの先駆け)
  • イーサネット
  • Smalltalkプログラミング言語および統合開発環境での完全に形成されたオブジェクト指向プログラミング

その他PARCのイノベーションとしては、レーザープリンターや、今日のコンピューターグラフィックアニメーションソフトウェアの先駆けであるSuperpaintがあります(Superpaintの開発者の一人であるAlvy Ray SmithはPixarの共同創立者となりました)。

『Dealers of Lightning: Xerox PARC and the Dawn of the Computer Age』の著者Michael A. HiltzikはPARCを、「歴史上最も異例で実りの多い研究施設」であり「国家的資産」と呼んでいます。この本で彼は、「PARCの爆発的な創造性」に貢献した4つの要因として次のものを挙げています。

  • 資金:Xeroxは、オフィスコピー機ではほとんど寡占状態の企業だったため、PARCに限りなく資金を注ぎ込むことができました。
  • 才能:当時の政治的状況のおかげで、優秀な研究者の才能は買い手市場でした。「Xeroxは最高の科学者とエンジニアを集められるポジションにあった稀有な企業の1つでした」とHiltzikは書いています。
  • コンピューター技術の状況:「それ以前も、またそれ以降も、コンピューターサイエンスがあれほど短期間で急速に理解されていったことはありませんでした。PARCという知能のグリーンハウスは、創造的な頭脳集団を雇ってコンピューター技術を実現させた地球上の数少ない場所の1つでした。」
  • 経営陣:PARCの経営陣は、最良の研究結果を得るには、出来る限り最高の研究者を雇って自由に研究させることに限るということを知っていました。「大部分のPARCのコンピューターエンジニアたちは、Xeroxの既存製品を向上させるという会社の義務から免除されていました。彼らには別の課題があったためです。それは会社を新しい未知の領域に導くことでした。」

優秀な研究者の中に、Alan Kay、Dan Ingalls、Adele Goldberg、Ted Kaehler、Scott WallaceというSmalltalkの設計開発者たちがいました。

Alan Kay:Smalltalkの父

1969年、コンピューターがまだ一部屋を占めるほど大型であった時に、Alan Kayは持ち歩きできるインタラクティブなノートブック型コンピューターの構想を持っていました。彼はそれを「ダイナブック」と呼び、周囲の人々にからかわれ、頭がおかしいと思われながらも、その後数年にわたって自分のビジョンを追求しました。

『Dealers in Lightning』でHiltzikは、Kayを「普通人ではない人」と呼んで丸々1章を彼に割いています。その中でHiltzikは、Kayを次のように表現しています。

「Alan Kayは今日のコンピューターオタクの模範ともいう人物で、1970年代の新技術に関わった世代にとってはChuck Yeagerにも等しい存在でした。あの時代の学生や電子オタクの隔絶された社会で過ごしていたら、『Scientific American』誌でマイクロ電子やソフトウェアに関するKayの明快な解説を読んでいるか、または(とりわけ)『Rolling Stone』誌で彼自身に関する記事を読んでおり、彼の名前は知っていたでしょう。その時代の電子オタクたちはマシンや数学に没頭し、社会的には役に立たない疎外された状況にありました。Alan Kayはそんな状況を前向きに楽しみ、自慢し、カウンターカルチャーのバイブルそのものの紙面で、さえない状況にいるオタクとその厄介な仲間が、コンピューターとその比類なきパワーが一般大衆のものとなる新世代の預言者であることを宣言したのです。

Kayはアメリカ空軍にいる間に気まぐれで標準テストを受けた後、1961年にコンピュータープログラミングの世界に入りました。1966年、彼はコンピューターサイエンスの博士号を取得するため、ユタ大学に入学しました。そこで出会ったのが「マンマシングラフィカル通信システム」であるSketchpadでした。KayにとってSketchpadは、コンピューティングが約束するすべてのものを実現する「道を示してくれる光」に見えました。

まもなくKayは、Seymour Papertが子供たちにコンピューターについて教えるために開発したLOGOという単純なプログラミング言語に触れます。KayのSmalltalkにはビジュアルフィードバック、初心者にとっての使いやすさ、子供たちの驚きと創造性への指向などLOGOのいくつかの要素が取り込まれています。

FLEXマシンと呼ばれる理想的なインタラクティブコンピューターの概要を示したKayの博士論文は、PARCのComputer Science Lab(CSL)のアソシエイトマネージャであるBob Taylorの目に留まりました。TaylorはKayのビジョンがPARCチームにとって必要であると考え、KayをPARCのSystem Sciences Lab(SSL)に採用しました。

Kayは、コンピューターエンジニアリングで有名なChuck ThackerとButler Lampsonの二人と同僚でした。Thackerが3か月で新しいコンピューターを作ってみせるという賭けをしたとき、二人はKayのところへやって来ました。二人はこのプロジェクトの元手となる資金をKayが持っていること、そして何よりも、Kayが「ダイナブック」を作りたいという強い情熱を持っていることを知っていました。Kayは取引に同意しましたが、この同意が後に新しいマシンのための新しいプログラミング言語、Smalltalkを作成することになりました。

Kayの大きな挑戦
PARCでのある朝、KayはTed KaehlerとDan Ingallsがプログラミング言語により大きな力を持たせるには言語を大きくしなければならないと議論している場面に遭遇します。Kayはすぐに、世界で最も強力なコンピューター言語をたった1ページのコードで定義できると断言しました。KaehlerとIngallsは彼に「言葉より行動で示せ」と言いました。

Kayは同僚からの挑戦に応えるため、8日間午前4時から午前8時まで行動したのです。優れたシステムを証明するものはシンプルさであると考えたKayは、表面下では複雑な操作が実行されていても、プログラムがシンプルなパスを経由したシンプルな結果に到達できるような言語を作成することを目標に設定しました。彼はそれを「詳細を隠す」と言っています。

Kayは、PapertのLOGOの経験とFLEXマシンに関する論文、そしてそれまでのSketchpadおよびSimulaでの仕事を基に、この新しい言語を作成しました。8日間休まず作業した末、Kayは「Smalltalk」という新しいプログラミング言語の青写真を完成しました。当然のことながら、コードはすべて1ページに収まっていました。

作成した言語の名前についてKayは、『The Early History of Smalltalk』という文書の中で次のように説明しています。多くのプログラミングシステムは『ゼウス、オーディン、トールといった全能の神々の名前を持ちながらほとんど役立たない。「Smalltalk」なら当たり障りのない名前であり、もしこれが優れた言語であれば、うれしい驚きを与えることができると思った。」

賭けに勝った後、Kayはそれで終わりだと思っていました。「この出来事はオフィシャルな「伝統的プログラミング」の仕事から離れた楽しい休日でした。そしてこれで終わったと思った。」とKayは書いています。「驚いたことにわずか数日後、Dan IngallsがNova(Xeroxが作成した初期の商用ミニコンピューター)上で動作するスキーマを見せてくれたのです。後にKayは、「Dan Ingallsがいなければその後誰も私の噂を聞くことはなかっただろう」と言っています。

本当のSmalltalk
このSmalltalkの最初のバージョンはSmalltalk-71として知られ、そのスキーマの多くは6つのアイディアに分かれています。

  • すべては1つのオブジェクトである
  • オブジェクトは(オブジェクトに関する)メッセージの送受信によって通信する
  • オブジェクトは(オブジェクトに関する)独自のメモリを持つ
  • すべてのオブジェクトはクラス(オブジェクトでなければならない)のインスタンスである
  • クラスはそのインスタンスに(プログラムリストのオブジェクトの形で)共有動作を保持する
  • プログラムリストを評価するため、コントロールは最初のオブジェクトに渡され、それ以降はそのメッセージとして処理される

最初の3つの原則は、Smalltalkのあらゆるバージョンを通じて同様に維持されています。後半の3つは、Kayによれば、バージョンごとに変更されています。

Smalltalkのバージョン
Smalltalk-71は、Chuck Thackerが賭けに勝つため3か月で構築した革新的なXerox Alto(Kayの呼び方によれば「暫定ダイナブック」)に実装されました。しかしSmalltalk-71は「本当のSmalltalk」とは見なされていません。」Kayによれば、最初の本当のSmalltalkはSmalltalk-72でした。この「強化」バージョンは研究作業に使用され、Actorモデルの開発に影響を与えました。Smalltalk-72の構文と実行モデルは、今日の各種Smalltalk製品とは非常に異なっていました。

大幅な改定の後、Smalltalk-76が作成されました。このシステムは、クラスライブラリコードブラウザ/エディターなど、現在普及しているツールの多くを採用した開発環境です。Smalltalk-80では、属性と動作を個々のクラスに関連付けることによって「すべてがオブジェクト」(変数を除く)パラダイムを維持するためメタクラスと、integerやbooleanなどのプリミティブ型まで追加されました。

Smalltalk-80は、PARC以外で使用可能になった最初のバージョンの言語です。1983年、Smalltalk-80バージョン2として知られる一般提供の実装が、イメージ(オブジェクト定義付きプラットフォーム非依存型ファイル)と仮想マシンの仕様としてリリースされました。ANSI Smalltalkは1998年から標準の言語リファレンスとなっています。

現在よく知られているSmalltalkの2つの各種実装製品は、これらオリジナルのSmalltalk-80イメージから生まれたものです。SqueakはSmalltalk-80バージョン1からApple Smalltalkを経て派生したオープンソース実装です。VisualWorks®は、Smalltalk-80バージョン2からSmalltalk-80 2.5およびObjectWorksを経て派生しています。

Cincomの歴史
1980年代終わりから1990年代半ばにかけて、サポート、トレーニング、アドオンを含むSmalltalkの環境は競合する2社ParcPlace SystemsとDigitalkによって販売されていました。ParcPlace SystemsはUnix/Sun Microsystems市場を対象とし、一方のDigitalkはMicrosoft WindowsまたはIBMのOS/2を動作させるIntelベースのPCに力を入れていました。

Enfin Softwareは、80年代後半のもう1社の商用Smalltalkプロバイダでした。Digitalkの製品のようにEnfinはWindowsおよびOS/2上で動作しましたが、他の製品とは対照的にかなり商用を中心としていました。Enfinは大規模なデータベースとメインフレーム接続性、GUI設計機能を備えていましたが、ParcPlaceまたはDigitalkのような洗練されたクラスライブラリや仮想マシンを備えていませんでした。

IBMは当初はDigitalk製品をサポートし、1995年VisualAge/SmalltalkというSmalltalk製品で市場に参入しました。後に、IBMはSmalltalkの独自バージョンを開発し、それがVisualAgeとなります。

1995年、ParcPlaceとDigitalkは合併してParcPlace-Digitalkになり、1997年にはObjectShareとして再ブランド化されました。合併後のParcPlace-Digitalkは、新しい競合であるJavaの登場に何とか対応しようとしましたが成功しませんでした。1999年までに、ObjectShareはVisualWorksをCincomに売却しました。

1992年、EaselはEnfin Smalltalkを取得してオブジェクトモデリング機能とリレーショナルマッピング機能を追加し、それをObjectStudio®と名付けました。1994年、CincomはTotal FrameWorkの一環としてObjectStudioの販売、サービス、サポートにおいてEaselとのパートナーシップを発表しました。1999年までに、Cincomは、Easelを買収したVMARKと、まずObjectStudioを開発するジョイントベンチャーを立ち上げた後、ObjectStudioの開発を完全に引き継ぎました。

CincomはSmalltalk技術の価値をすぐに認識し、VisualWorksとObjectStudioを追求したのでした。その結果、CincomはVisualWorksとObjectStudioをCincom Smalltalkという製品ラインに組み込みました。Cincomは1999年以降毎年VisualWorksとObjectStudioの新リリースを発表し、Smalltalkを強化しました。

 

過去のニュース