Smalltalk
出典: フリー百科事典『ウィキペディア(Wikipedia)』
パラダイム: | オブジェクト指向 |
---|---|
登場時期: | 1969年に開発が開始、 1980年に公開 |
設計者: | アラン・ケイ |
開発者: | アラン・ケイ、Dan Ingalls、Xerox PARC |
最新リリース: | Smalltalk-80 version 2 /1980年 |
型付け: | 動的型付け |
主な処理系: | Squeak, VisualWorks |
影響を受けた言語: | Simula, Sketchpad, LISP |
影響を与えた言語: | Objective-C, Self, Java, Dylan, AppleScript, NewtonScript, Python, Ruby |
Smalltalk(スモールトーク)は、Simulaのオブジェクト(およびクラス)、Lispの機能、LOGOのエッセンスを組み合わせて作られたクラスベースの純粋オブジェクト指向プログラミング言語、および、それによって記述構築された統合化プログラミング環境の呼称。
Smalltalkで一語。Small Talk、SmallTalkはありがちな誤り。ただし、この名前の由来である、世間話・雑談を意味する英語は、small talk。
目次 |
[編集] 開発の経緯
XEROXのパロアルト研究所 (PARC) で1970年代に約10年かけ3世代(Smalltalk-72、76、80)を経て整備された。当初は、暫定DynabookであるAltoのオペレーティングシステム的位置づけだったが、AltoのXEROX社製品としての販売の可能性が同社上層部決定により完全に排除されたこと、アイデアパーソンであるアラン・ケイの研究開発グループ離脱などを受けてDynabook色は失せ、Altoのハードウエア技術を基にした商用マシン上で動作するプロの開発者向け統合化プログラミング環境「Smalltalk-80」として1983年に発売されることになる。現在はCincomよりVisualWorksというパッケージ名でメジャーOS向けに販売されている。
[編集] Smalltalkとオブジェクト指向
豊富で整備されたクラスライブラリは、特にオブジェクト指向プログラミングの手本とされ、デザインパターンの宝庫と称されるまで洗練されたものになっている。また、後世の多くのオブジェクト指向プログラミング言語に直接間接的に多大な影響を与えた。
アラン・ケイが「オブジェクト指向」という言葉を創った当初は、Smalltalkシステムが体現した「パーソナルコンピューティングに関わるすべてを『オブジェクト』とそれらの間で交わされる『メッセージ送信』によって表現すること」を意味していた。しかしのちに、C++の設計者として知られるビャーネ・ストロヴストルップが(自身、Smalltalkの影響は受けていないと主張する)C++の設計を通じて整理し発表した「『継承』機構と『多相性』を付加した『抽象データ型』のスーパーセット」という考え方に置き換えられ定着している(カプセル化、継承、多相性)。現在は、両者の渾然一体化した曖昧な概念として語られることが多い。
[編集] Smalltalk環境の独自性
Smalltalk言語は、オブジェクトへのメッセージ送信をダイレクトに記述する表記の特殊性や、制御構造をもオブジェクトへのメッセージ送信の形で記述する徹底ぶりともあわせて、C言語やC++などの構造化プログラミングの流れを強く受け継ぐ言語や、その開発手法に慣れた開発者にとっては極めて取っ付きが悪い言語・環境であるといわれている。このことは、Smalltalkが単なるプログラミング言語ではなく、従来のOSの概念をも包括する「環境」であることが一つの理由である。Smalltalkを単なる言語としてとらえると、他の言語と比較し、使用しているOSのGUIにまったく従わないなど、その独自性が、大きな「欠点」として映る場合もある。
実際には、このことはVisualWorksやSqueakなど、旧来のSmalltalk環境、つまりDynabookコンピュータ環境の要素を引き継ぐIDE、を通じてSmalltalk言語や処理系を学ぼうとするなら、新しいOSに接するのと同じ心構え(多かれ少なかれ)を持つべきであるということを意味している。
[編集] 環境および処理系
Smalltalkの言語仕様は原則として非常に単純なため、環境もしくは処理系の相違による互換の有無は、クラスライブラリの差異程度に由来するもの(ある意味、バージョンの違いもこれも含まれる)から、言語仕様自体の改変に由来のものまで空間的に連続で多岐にわたる。このため、単にSmalltalkとして語弊のある場合、一般にその環境および処理系の呼称もしくは商標(必要ならそのバージョン)をして他と区別するために用いる慣習がある。
- Smalltalk-80
- ObjectWorks
- VisualWorks
- Squeak
- Dolphin Smalltalk
- Smalltalk/V
- Smalltalk Express
- Smalltalk/X
- VisualAge Smalltalk
- Concurrent Smalltalk
- Smalltalk MT
- Distributed Smalltalk
- Little Smalltalk
- GNU Smalltalk
- SmallScript (S#)
- #Smalltalk
- Strongtalk
- PIC/Smalltalk
- Smalltalk/JVM
- Self 4.0 Smalltalk System
- Smalltalk 72 for Squeak
- Ambrai Smalltalk