Smalltalk
[Wikipedia|▼Menu]
.mw-parser-output .hatnote{margin:0.5em 0;padding:3px 2em;background-color:transparent;border-bottom:1px solid #a2a9b1;font-size:90%}

この項目では、プログラミング言語について説明しています。東方神起の楽曲については「Small Talk」をご覧ください。

SmalltalkSmalltalkのロゴ
パラダイムオブジェクト指向プログラミングクラスベース 
登場時期

1972年 (52年前) (1972) (開発開始)

1980年 (44年前) (1980) (公開)

設計者アラン・ケイ, ダン・インガルス, エイデル・ゴールドバーグ
開発者アラン・ケイ, ダン・インガルス, エイデル・ゴールドバーグ, Ted Kaehler, Diana Merry, Scott Wallace, Peter Deutsch, ラリー・テスラー, パロアルト研究所
最新リリースVisualWorks 8.3.1 英語版/ 2018年5月 (6年前) (2018-05)
型付け型なし[1], ダック・タイピング(オプショナルな静的型検査が可能な処理系も存在する)
主な処理系VisualWorks、SqueakPharo
影響を受けた言語LISP、Simula 67、SimulalOGO 
影響を与えた言語Actor(英語版)、Flavors、Objective-CSelfRubyScala
拡張子st 
テンプレートを表示
オブジェクト指向言語に分類される
プログラミング言語>>他のプログラミング言語

カテゴリ / テンプレート

Smalltalk(スモールトーク)は、Simulaオブジェクト(およびクラス)、LISPの徹底した動的性LOGO のタートル操作や描画機能に、アラン・ケイの「メッセージング」というアイデア[2]を組み合わせて作られたクラスベースで手続き型の純粋オブジェクト指向プログラミング言語、および、それによって記述構築された統合化プログラミング環境の呼称。

Smalltalk で一語であり、「Small Talk」「SmallTalk」などは誤りである。

大規模な開発実績としてはCargill Lynx Project[3]があり、国産製品の開発実績としてはMCFrameがある。
概要
開発の経緯

ゼロックスパロアルト研究所(PARC)で1970年代に約10年かけ3世代(Smalltalk-72、76、80)を経て整備された。当初は、ダイナブックである Alto(アルト) のオペレーティングシステム的位置付けだったが、Alto のゼロックス社製品としての販売の可能性が同社上層部決定により完全に排除されたこと、発案者であるアラン・ケイの研究開発グループ離脱などを受けてダイナブック色は失せ、Alto のハードウェア技術を基にした商用マシン上で動作するプロの開発者向け統合化プログラミング環境「Smalltalk-80」として1983年に発売されることになる。現在はシンコム[注釈 1]より VisualWorks(ビジュアルワークス)という製品名で主要なオペレーティングシステム向けに販売されている。
Smalltalkの変遷

※この節は[4][5]を元に執筆されている。

名称備考
Smalltalk-71最初にSmalltalkの名前を冠した言語だが、文法など一部仕様が定められただけで実装はされていない。
Smalltalk-72メッセージングの機構により最初に動作したSmalltalk。初期のGUIはタートルグラフィックスで表現されたウインドウやメニューなど原始的な構成で、言語仕様的にもクラスが関数であったり、メソッド定義がリーダーマクロ(あるいは簡易パーサー記述)のようであったりと、現在のSmalltalkとは異なる点が多い。
Smalltalk-74Smalltalk-72に対し、処理系の高速化、GUIの整備、オブジェクト指向仮想メモリ (OOZE) を導入したバージョン。
Smalltalk-76現在のメッセージ式に近い文法(特にキーワードメッセージ式)を取り入れたSmalltalk。メタクラス、第一級オブジェクトとしてのブロックなどはまだない。
Smalltalk-78Smalltalk-76を、可搬式の試作機「NoteTaker」で動作するよう8086向けにBitBlt等を再構築し、小さく整理したバージョン。
Smalltalk-80現在に知られる仕様となったSmalltalk。
ObjectWorksSmalltalk-80を一般に普及させるために開発・販売されたSmalltalk。
VisualWorksObjectWorksを引き継ぎ開発されたSmalltalk。Smalltak直系の子孫で現代に至るSmalltalkの中で本家と言える存在である。
Apple SmalltalkSmalltalk-80 v1(リリース前バージョン)を元に、XEROX社に許諾および指導を受けてAppleが開発したSmalltalk。同時期にDECテクトロニクスヒューレット・パッカードでも同様の試みがなされている。
SqueakAppleに移籍したアラン・ケイ、ダン・インガルスらによってApple Smalltalkを元に開発された。Smalltalkの設計者により開発されており、いわば分家と言える存在である。
PharoSqueakから派生した実装。大胆で実験的な機能追加の試みが多いが、2017年現在精力的かつ活発に開発が進められているSmalltalk処理系のひとつ。

Smalltalk とオブジェクト指向

豊富で整備されたクラスライブラリーは、特にオブジェクト指向プログラミングの手本とされ、デザインパターンの宝庫と称されるまで洗練されたものになっている。また、後世の多くのオブジェクト指向プログラミング言語に直接間接的に多大な影響を与えた。

アラン・ケイが「オブジェクト指向」という言葉を創った当初は、Smalltalk システムが体現した「パーソナルコンピューティングに関わる全てを『オブジェクト』とそれらの間で交わされる『メッセージ送信』によって表現すること」を意味していた。しかしのちに、C++ の設計者として知られるビャーネ・ストロヴストルップが(自身、Smalltalk の影響は受けていないと主張する)C++ の設計を通じて整理し発表した「『継承』機構と『多態性』を付加した『抽象データ型』のスーパーセット」という考え方として広く認知されるようになった(カプセル化継承多態性)。現在は、両者の渾然一体化した曖昧な概念として語られることが多い。
Smalltalk の独自性

Smalltalk は、オブジェクトへのメッセージ送信を率直に記述する表記の特殊性や、制御構造をもたずオブジェクトへのメッセージ送信の形で記述する徹底ぶりとも併せて、C言語や C++ などの流れを強く受け継ぐ言語、およびその開発手法に慣れた開発者にとって極めてとっつきにくい言語・環境であるといわれている。このことは、Smalltalk が単なるプログラミング言語ではなく、従来のオペレーティングシステムの概念をも包括する「環境」であることが一つの理由である。Smalltalk を単なる言語としてとらえると、他の言語と比較したとき、使用するオペレーティングシステムのグラフィカルユーザインターフェースに全く従わないなど、その独自性が大きな「欠点」として映る場合もある。

これは VisualWorks や Squeak(スクイーク) など、旧来の Smalltalk 環境、つまりダイナブックコンピュータ環境の要素を引き継ぐ統合開発環境を通じて Smalltalk 言語や処理系を学ぶなら、多かれ少なかれ新たなオペレーティングシステムに接するような心構えを持つべきことを意味する。
環境および処理系としてのSmalltalk
Smalltalk 環境から見たSmalltalk 言語

Smalltalk 環境から見た Smalltalk 言語は、いわば bash などのシェルに近い。Smalltalk 環境内であればどこでもマウスで選択した文字列を Smalltalk のソースコードとして実行できるためシェルにコマンドを打ち込んだ時の様に簡単な問い合わせをすぐ実行できるようになっている。

例えばオブジェクト(クラスやメソッドも含む)の構造を調べたければ、そのオブジェクトに#browse(ブラウズ)セレクターあるいは#inspect(インスペクト)セレクターを使ったメッセージ式を書き、そのメッセージ式をマウスで選択してdo it(WindowsであればCtrl+Dを押す)すれば良い。


次ページ
記事の検索
おまかせリスト
▼オプションを表示
ブックマーク登録
mixiチェック!
Twitterに投稿
オプション/リンク一覧
話題のニュース
列車運行情報
暇つぶしWikipedia

Size:111 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)
担当:undef