Smalltalk

コンピュータ

Smalltalk

すもーるとーく

歴史

1970 年代に Xerox 社のパロアルト研究所 (PARC) に所属していたアラン・ケイの指導のもと , 彼の「 Dynabook 」構想の暫定解であるコンピュータ「 Alto 」における対話的コンピュータ環境 ( 今風に言うところの “GUI ベースの OS” ) として開発された . しかしパーソナルコンピュータ市場を読み切れなかった Xerox は、 SmalltalkOS として搭載した Alto を販売することはせず、結局、パーソナルコンピュータ環境からは程遠い、 “プロ開発者向けの統合化開発環境” として Smalltalk を商品化するにとどまった。他方で Alto は、 Smalltalk とは別に Xerox で開発された GUI ベースの OS 「Star 」を搭載した同名のワークステーションに技術転用され、その試作機としての使命をまっとうする。

Smalltalk は原則非公開だったが、後に方針を変更。 Byte 誌 1981 年8 月号の特集で大々的に紹介され、以降、世界の注目を浴びることになる。これに前後して、当時の大手コンピュータメーカー各社にライセンスされたり、 Xerox 自身も ParcPlace Systems という開発などを手がける専門の子会社を設立し販売を開始した「 Smalltalk-80 」を源流に、無数のバージョンやバリエーションが生じた。なお、 Smalltalk-80 の直系は現在 Cincom 社が開発販売している「 VisualWorks 」。また、 Smalltalk-80 のサブセットで Apple が同社の Macintosh 用に移植し、開発者向けに販売していた Apple Smalltalk から派生的に作られた「 Squeak 」も近年話題を呼んでいる。 Little SmalltalkGNU Smalltalk といった、愛好家による “お手製” の実装も多い。

言語

Smalltalk は環境内で使用できる言語の名前でもある。言語としての Smalltalk は、その特徴として、 SIMULA で提案されたクラスとオブジェクトという枠組み、あらゆるものが第一級データである LISP 的な機構、 LOGO の表記や表現における “親しみやすさ” を併せ持つ。 Smalltalk で扱うことができるデータはすべてオブジェクトで、コードは常に “オブジェクトへのメッセージ送信” のスタイルで記述し、多くの場合、内部的にもそのように処理される。二項演算や、 LISP を除く一般的な言語では “構文” として用意される条件分岐などの制御構造表現においてもこの原則は貫かれている。

なお、当初「オブジェクト指向」は、この “オブジェクトへのメッセージ送信” を意味するものであったが、後に C ++ の設計者であるビアルネ・ストラウストラップが 1986 年に発表した “抽象データ型のスーパーセット” という「カプセル化、継承、多態性」に代表される考え方に置き換えられてゆくことになる。現在は、両者をミックスした概念で語られることが多く、これが「オブジェクト指向」を 難解なキーワード にしてしまう原因のひとつとも考えられる。また、 オブジェクト指向プログラミング言語“” に2 つの元祖があるのはこうした背景による ( 後者の「オブジェクト指向」の立場での元祖は SIMULA ) 。

Smalltalk-80 の発表をきっかけに、多くの既存言語が「オブジェクト指向」を取り込んだハイブリッド言語、あるいはマルチパラダイム言語として生まれ変わった。また、デザインパターンやリファクタリング、エクストリーム・プログラミング XPなどの比較的新しい概念や手法も、 Smalltalk と深い関わりを持つなど、「オブジェクト指向」の言葉の持つ意味はすっかり変わってしまったが、その影響力は多岐かつ長期にわたっていることも特筆に値する。

環境

1970 年代から 1980 年代、まだキャラクターベースの表示や UI が主流だった時代に、 Smalltalk は初期のバージョンからグラフィカルベースの UI を備えていた。それを受け継いだ Smalltalk-80 も( “OS” ではなく “開発環境” としてではあったが ) 驚きをもって受け止められた。具体的には、 Alto のビットマップディスプレイ 、標準装備のマウスを前提とした、オーバーラップ・ウインドウ、ポップアップメニュー、 WYSIWYG かつインタラクティブなエディタ、エンドユーザーがグリフを自在に編集できるフォントなどで、また、デスクトップ、 キーボードショートカット、( テキストに対象を限るが ) カット & ペーストといった見た目や使い勝手に関わるしくみも含め、ほぼ現在の GUI ベースの OS の姿を 1970 年半ば頃には完備していた。

Smalltalk においてデータやプログラムは、ファイルではなく、すべてオブジェクトとしてメモリ上で管理されるため、 MacintoshFinder  NeXT の Workspace Manager( 現在の OS X では Finder のカラム表示にその名残を残す ) などにも大きな影響を与えている。

AppleLisa、Macintosh、Microsoft Windows のようなウインドウ作業環境は、当初、 Smalltalk システムのルック &  Smalltalk は多岐かつ長期にわたって他者に影響を与え続けている点もまた、特筆に値する。