Smalltalk
SmallTalk や Small Talk はよくある誤った表記。“t”は小文字で、Smalltalk で一語(talk の前で切らない)。
1970 年代の XEROX パロアルト研究所(PARC)で、当初、暫定的な Dynabook(つまり、Alto)用 OS のひとつとして発案、設計、研究、拡張された環境。あるいはその中で使用できるオブジェクト指向プログラミング言語。
Smalltalk を取り巻く様々な誤解や認識違い
上の表記の件も含めて、ソフトウエアとしては比較的長い歴史を持ち、世の中にそれなりに名が知られ、多くのものに陰に陽に多大な影響を及ぼしているにもかかわらず、それを改めて紹介する際に、これほど多くの但し書きを必要とするソフトウエアはおそらく Smalltalk をおいて他には見当たらない。
開発スタート時こそ純粋な言語処理系だったが、Alto というパートナーを得て利用可能なリソースが整うととすぐに GUI の組み込みが模索され、ほどなくして、真にパーソナルなコンピュータのための OS としての様相を呈するようになった Smalltalk も、1970 年代終盤になって XEROX 社の方針でプロに限定した開発環境への方向転換を迫られる。結局、Alto の OS としての将来の夢をうち砕かれた Smalltalk は、同社製ワークステーションの Star 、あるいは、他社製コンピュータシステム向けのいちアプリであるちょっと変わった新しい統合化開発環境、もしくはプログラミング言語として世に送り出され、それでもかなりの衝撃をもって世の中に受け止められる。皮肉にもこのセンセーショナルなデビューが、現在にいたるまで Smalltalk を単なるプログラミング言語として一般に認知させ続ける、そして言語として学習するのには難解であるとのネガティブな印象がつきまとうようになる(参考:Smalltalk の学びにくさの原因)そもそものケチのつけはじめでもあった。
販売会社の社名変更や移管を経て、その進化は現在の VisualWorks に至るが、もっともよく知られる象徴的な「Smalltalk-80」の名がその商標から失われて久しいせいもあり、かなりのベテランプログラマでも、Smalltalk なんてものは実験用、過去の遺物、滅んだものとして認識がはびこっている。最近になって Squeak が話題にのぼるようになり、やっとこの誤った認識は払拭されつつある。
マスコミへの露出が増えたことに加えて、Squeak や、非商用版 VisualWorks のリリースで、高嶺の花だった処理系が無償で入手可能になったこと、マシンの大幅な性能アップに伴い遅延感覚におけるある種の“圧縮効果”(たとえば C 言語で 1 時間の処理が Smalltalk で 24 時間かかって使いものにならないと判断された場合でも、時を経て大幅なマシンの性能アップがあれば、その差は当初ほど深刻ではなくなる)が生じたこと、も、実際に利用可能な環境・言語処理系だとあらためて認識してもらえるようになった要因のひとつだろう。
ただ一方で Smalltalk-80 から 20 年という年月は、Squeak あるいは VisualWorks を、自分の知る“あの Smalltalk”と同一のものと思い至らせず、Smalltalk から派生した新しい言語であるかのような錯覚を生じさせるのに十分な時間であったのと、さらに Smalltalk コミュニティにおいて、ある Smalltalk 環境内で使用できる Smalltalk 言語を指し示すのに、その環境の名称やバージョン、商標などを名前代わりに用いる慣習も手伝ってか、(やはり Smalltalk は滅びていて) Squeak や VisualWorks という名前の別言語が改めて開発された、などという新たな誤解を生じさせる困った事態も招いている(Squeak は環境内に Smalltalk とは関係ない別の言語である Squeak eToys を抱えているのでさらに状況は複雑)。
また、Smalltalk を“よく知る”識者が、Prolog とともに“変わり者言語”としてひとくくりに扱われることが多く、自身実際に派生的に生じた類似言語(方言)の多い Lisp とのアナロジーを Smalltalk に適用しつつ Squeak や VisualWorks を紹介しがちであることも、こうした誤解を助長するのに一役買っているかもしれない(ただ、Squeak や VisualWorks 以外にも Smalltalk は多数あり、その中には言語機能の拡充を経てもはや Smalltalk と呼ぶには躊躇われる、まさに“方言”と呼ぶべき Smalltalk もいくつか存在するのも事実)。
こうした流れで、Squeak が正真正銘の Smalltalk 環境であることや、VisualWorks と名を変えた純正処理系があることをあらためて説明しても理解されない場面もしばしば見受けられる。よくニュース記事などにある「Squeak という言語を開発中」などとの記述は、こうした理由から生じる正確とは言い難いものなので注意されたい。
プログラミング言語としての Smalltalk の成り立ち
Smalltalk 環境で使用できる Smalltalk 言語の成り立ちは、主に、SIMULA 67 が確立したオブジェクトという考えかたおよび機能と、LISP の特徴的な処理・データの均質な扱いの融合による。アラン・ケイらは当時、Prolog には詳しくなく、この要素を取り入れたらもっと面白い処理系になっただろうと後に語っている。
単にオブジェクト指向の LISP のようにならなかったのは、その環境のみならず、プログラムコードをもユーザフレンドリであるべきだとの思想が反映された結果と思われる(※ 正確には Smalltalk より前に「メッセージ送信メタファにもとづくオブジェクト指向」という考え方とそれに相応しい文法が先に考案されていたから)。そうした思想が垣間見られる例として、Alto の誕生により満足できる処理速度が得られるようになるとすぐに Smalltalk 環境(Smalltalk-72)にはLOGO 風のプログラマブルな描画機能が追加されたことが挙げられる。同機能は Squeak でも、その顔とも言えるタイルスクリプティング・システム(Squeak eToys)において、今もなお前面に押し出されている。
LOGO を例に出すと、そくざに「子供向き」と直結する向きもあるが、Smalltalk 言語および環境は、子供も使えるわかりやすさで、しかし極端な話、その子がコンピュータ科学の研究者になっても使い続けられるように本格的で実用に耐えられるものを目指していたことも忘れてはいけない。
3 + 4 などの数式処理から、通常は文で表わす if-then-else などに代表される制御構造、それに言語ではないが GUI のウィジェットや枠組みを含めたあらゆるものすべてを「オブジェクトへのメッセージ送信」というメタファで実現していることも特色である。この姿勢に対して「やりすぎ」と評する向きもあるが、個人の好き嫌いならともかく、その程度を論じるにはいささか認識不足と言わざるをえない。そもそも Smalltalk は、「オブジェクトへのメッセージ送信」というメタファにもとづくオブジェクト指向というパラダイムで、パーソナルコンピューティングに関わるものをどこまで表現しうるかを模索するためのインスタンスと言える存在だからだ。したがって、程度で言えば、当時のマシンパワーやリソース不足による制約から、むしろまだ踏み込みが足りないくらいだと考える方が妥当に思える。
パーソナルコンピュータ環境(OS)としての Smalltalk の先進性
Smalltalk 言語だけが注目さがちだが、他方で Smalltalk 環境自体も(当初の)汎用のコンピュータ環境としてかなり先進的で、
- ビットマップディスプレイでの表示
- マウスを活用した操作
- オーバーラップ・マルチウインドウ、
- ポップアップメニュー、
- WYSIWYG のマルチフォント・テキスト編集
といった 1983 年以降 Macintosh によって世に認知されるようになる“モダン”な GUI やそのポリシーをかなり早い時期にサポートするなどといった先見性を有する。
なお、GUI の歴史を語る人が、Alto(アルト)を引き合いに出すときには、本人が意識しているいないに関わらず、当時の(つまり暫定ダイナブック環境として開発中の)Smalltalk 環境のことを指していると考えてほぼ間違いない。おもしろいことに、Mac 信奉者で、Smalltalk を名前やアラン・ケイとのからみは知ってはいてもそれを単なる言語として狭く捉えている人は、GUI ベースの「Alto OS」のようなものを想定したり、そのようなものがあるかのように語ることが多い。さらに興味深いことにそれは、(私自身のかつての発言を含めて)たいていは本人の“創作”というオマケ付きである。
新しい VisualWorks からはすっかりそぎ落とされてしまったが、ベースが古い Squeak では(デフォルトの moprhic project ではなく、mvc project モードに切り換えることで)当初の Smalltalk-80 にかなり近い環境を今も体験することもできる。なお、Squeak は、最初に販売された Smalltalk-80 v2 のひとつ前のバージョン(v1) をもとにApple が自社製品向けに拡張(および機能削減) を施し開発者向けに配布・販売したもの(Apple Smalltalk)からさらに派生させて、近年になって作られたフリーでオープンな Smalltalk 環境である。Squeak なりの新しい工夫もないわけでもないが、Smalltalk としては、この 20 年間、着実な進歩を遂げた VisualWorks にくらべてかなり見劣りする部分も多々あるため「最新の Smalltalk 」などという各種メディアに散見される表現はあまり相応しくない。--sumim
small talk
暫定 Dynabook に必要とされ Smalltalk に備えられた機能(オブジェクト指向もそのひとつ)と、オブジェクト指向プログラミングにあってしかるべき機能とが、Smalltalk-80 がオブジェクト指向プログラミング環境のお手本と評されたおかげで混同されている?
そもそも暫定 Dynabook 環境=プログラミング環境なのか、ではないのか?
暫定 Dynabook は、個人の表現としてのプログラミングが主な利用スタイルなわけだから、その環境をしてプログラミング環境と言い切ったとしても問題はない。しかし開発者と利用者を分ける旧来のコンピュータ環境におけるプログラミング環境と、それを区別しない暫定 Dynabook 環境における利用いち形態としてプログラミングを位置づけサポートする機能とは目指すものが自ずと違ったものになるはず。クラスベース・オブジェクト指向が抱える複雑さと、暫定 Dynabook と旧来型コンピュータ環境においてプログラミング環境に求めるものの違いとが Smalltalk を分かりにくいものにしている要因では。--sumim
私は Smalltalk を 「環境だ!」と、いつも言っているのですが、ふと、「今、私がこのワークスペースに書いている言語は何?」と思う事があります。というか質問されました。「Smalltalk だよ...」で良いでしょうか。 --spiral
良いと思います。「Smalltalk」という言葉は2つの物を表わしていて、ひとつはここで強調されている「Smalltalk 環境」、もう一方は、その環境内で使用できるユーザースクリプティング、データ記述、環境構築用のコンピュータ言語である「Smalltalk プログラミング言語」。ということで、ワークスペースを開いている環境も Smalltalk だし、そこで記述している言語も Smalltalk でよろしいかと。
ただ、前者、つまり「環境」については、処理系や実装、IDE 商品名を言うのが普通ですから、そこには、Smalltalk-80、Squeak、VisualWorks、Dolphin Smalltalk、Smalltalk/V、Smalltalk/X、VisualAge Smalltalk、Concurrent Smalltalk、Little Smalltalk、GNU Smalltalk、…などのほうが相応しいことが多いかもしれません。また、IDE としてとても特異な存在だった Smalltalk-80 の印象が強烈だったため(OS まるごと IDE と称したわけだからそれはそうだわな)、これをそのまま言語名とする用法も一部で定着し、今でも散見されます。また、言語名として Smalltalk-80 とするのは、文法などが大きく異なる Smalltalk-72 と区別する目的で有効だったからかもしれません。--sumim
なるほど。詳しい解説ありがとうございます。安心しました :-)。
Smalltalk の歴史に関しては鷲見さんのページを見るのが一番ですね。
読んだ結果、何故か スティーブ・ジョブズのファンになってしまいましたが。 --spiral
いえ。私のはかなり Dynabook に偏ったものなので、きちんとした Smalltalk 教育を受けた(またそれを心がけておられる)Smalltalker の方々は辟易としておられるのではないでしょうか。エンドユーザーならともかく、プログラマのかたは一線を引いておいてください。しかし、なぜに、スティーブ・ジョブズ?(笑)--sumim
そ、そうなのですか? ものすごい参考にしているのですが。しかも、鷲見さんのページを舞台に議論までしているのですが。:-)
スティーブ・ジョブズの
「一生を砂糖水を売って過ごすのか、それとも世界を変えてみないか」
という一言にヤラれました。彼アツいですね。惚れるかと思った。-- spiral
>彼アツいですね。
そう。アツいヤツですね。一緒に仕事するとたいへんな人らしいですが。>ジョブズ。
>鷲見さんのページを舞台に議論までしている
この議論はオフラインですか? かなり興味があります。ってか、参加させてください(笑)。--sumim
ときに spiral さんは、23日の夜はまだ長野方面ですよね? --sumim
> 一緒に仕事するとたいへんな人
まぁ、天才といわれる人は何時でも世間の理解を得られない物だという説がありますから..。一緒に仕事したいかと言われればものすごい微妙ですが。
> 議論
オフラインですね :-)。何の気無しに書いたメールの一言で、何時の間にか議論に発展してしまいました。内容は、関心にも書いたのですが、「クラスベース & プロトタイプベース」です。私のプロトタイプベースに対しての理解度が低かったために、だんだん意見が不毛になって来てもう議論が止まってしまいました。(結局、私がクラスベースでしか物が考えられなかったので...。)
私自身、こういう世界に足を踏み入れて 2年しか経っていないので、知識や経験が乏しいのですが、鷲見さんのいる所で議論をしてみたいですね。
>23日の夜
はい。まだ長野です。--spiral
んんん!?? 日記読まれているのですか? ウワー! 恥ずかしい!! --spiral
あいや。abee さんと新宿あたりで Smalltalk 談義でもしようかと思っていたものですから。よかったらご一緒にと。またの機会に是非。--sumim
おおおおお え、本当ですか? え、そうなんですか?(動揺) え、どうしよう。え、abee さんって、あの abee さんですよね? 鷲見さん東京の方に来られるんですか? いやぁ..ちょっと考えます。ものすごい動揺してます。今。--spiral
動揺させてしまいましたか(^_^;)。きままな一人旅というわけでもないのでしょう? でしたら他のかたにご迷惑をおかけしてはお誘いしたこちらとしても心苦しいので、お気になさらずに長野を満喫してきてください。そうでなくとも、わざわざ旅程を変更してまでご一緒していただく意義があるかどうかあやしいもんですし、ね(笑)。--sumim
あ、sumim さんのおっしゃる通り、Type-R に乗って関越をひた走る、本当に気ままな一人旅なんですけど(目的は法事ですが)。なんでお分かりになったんですか? :-)
もしかしたら、26日からに変更になるかもしれません。--spiral
もし大丈夫そうでしたら、sumi@seagreen.ocn.ne.jp までメールください。--sumim
おお、ほんとにSmalltalk(世間話?)になってる(^^; -戯
まったく(笑)。--sumim
失礼しました >戯 --spiral
あ。礼を失ったとは(俺は)思っていません。脱線と雑談モードは神の恩寵だと思っています(笑)。だって「思ってもみなかったもの」に出会えるチャンスなんだもん。 -戯
あ。これもセレンディピティかぁ -戯 ( <こら、*能力*ではないだろうが(藁) -戯)
今日、ソフトウェア開発技術者試験の問題で、「SmallTalk」と書かれていて、寝ていた頭がスッキリ醒めました。--spiral
いかんなぁ…。あれほど Smalltalk の t は小文字だと口をすっぱくして言っているのに。それとも、わざと?>ソフトウェア開発技術者試験問題作成者--sumim
大文字の T を、鉛筆でグシャグシャにして、t に直しておきました。 --spiral
試験用紙自体を採点するPhaseが無いのが問題なんでしょうね -戯
そもそもSmalltalkが試験に出たということ自体が驚きです。私のころは磁気コアメモリとかでしたよ。調べて見ると結構ありますね(これ(PDF)の問587とか)。--abee
ところで、その問587にはニヤリとさせられました。上滑りな知識だけでも十分に正解できる選択肢でしょうけど、心の底からオブジェクト指向を理解すると、どの選択肢も間違いなりの味わいが感じられる。
うがああ... なんですかこの問題わ。こんなヘヴィな問題が出るなんて... --spiral
このページを編集 (13844 bytes)
|
以下の 58 ページから参照されています。 |
- Wiki っぽい場(あるいは 疑似脳内ネットワーク) 最終更新: 2006-12-26, 16:42:10 <pharm88>
- Swiki 最終更新: 2005-10-18, 18:56:07 <phara>
- 関心空間 最終更新: 2006-04-02, 01:46:06 <192>
- Squeak 最終更新: 2004-03-22, 00:54:22 <192>
- Notes 最終更新: 2002-05-28, 11:16:15 <tibook>
- 北ガス 最終更新: 2004-09-30, 13:49:10 <p2124-i>
- XP 最終更新: 2003-04-05, 20:04:25 <yahoobb>
- Bill Gates 最終更新: 2003-04-05, 22:36:26 <ppp0237>
- Workspace 最終更新: 2002-05-28, 12:37:10 <tibook>
- バトル・オブ・シリコンバレー 最終更新: 2004-10-12, 23:00:00 <192>
- SML 最終更新: 2005-03-11, 23:57:36 <p1092-f>
- Smalltalker 最終更新: 2002-05-25, 21:04:30 <192>
- LISP 最終更新: 2004-09-09, 07:13:32 <164-21>
- オブジェクト指向 最終更新: 2006-03-17, 19:14:19 <phara>
- Dynabook 最終更新: 2011-04-14, 22:45:13 <uq1-221>
- Lisa 最終更新: 2003-12-25, 20:59:15 <p1177-i>
- SELF 最終更新: 2004-07-04, 17:09:53 <m202>
- すべてがFになる 最終更新: 2014-10-22, 09:11:15 <phara2>
- Morphic 最終更新: 2003-04-14, 18:11:47 <tibook>
- アデル・ゴールドバーグ 最終更新: 2003-10-15, 15:16:54 <omron-f>
- Smalltalk の 継続 で Prolog もどき 最終更新: 2003-05-16, 22:36:52 <192>
- Python 最終更新: 2004-04-25, 00:07:56 <192>
- 赤ボタン、黄ボタン、青ボタン 最終更新: 2005-05-19, 16:18:40 <phara>
- Croquet 最終更新: 2016-12-28, 14:51:30 <phara2>
- Croquet に関するメモ 最終更新: 2016-12-28, 12:51:09 <phara2>
- インスペクタ 最終更新: 2003-12-07, 18:14:16 <airh128>
- オブジェクト指向プログラミング 最終更新: 2007-03-16, 15:37:50 <pharm88>
- プロトタイプベース・オブジェクト指向 最終更新: 2006-04-26, 10:32:39 <khp0591>
- 戯 最終更新: 2003-11-23, 13:37:47 <airh128>
- Wiki の書き込みの書式はどんなのがいい? 最終更新: 2005-10-15, 11:21:30 <p6054-i>
- MVC 最終更新: 2013-11-11, 19:35:29 <phara2>
- Croquet、Slashdot や Slashdot-J で取り上げられる 最終更新: 2003-03-18, 11:00:44 <tibook>
- 派生 最終更新: 2003-03-28, 14:08:58 <tibook>
- メッセージ指向 最終更新: 2007-03-28, 17:32:29 <pharm88>
- Xlib 最終更新: 2004-08-13, 03:11:11 <j092011>
- オブジェクトの永続化とその方法 最終更新: 2005-08-16, 19:41:37 <phara>
- 動的で均質なシステム 最終更新: 2003-04-08, 13:28:56 <tibook>
- NewtonScript 最終更新: 2004-09-28, 01:34:05 <192>
- Apple のタコな発想 最終更新: 2004-09-10, 12:22:52 <tibook>
- システムブラウザ 最終更新: 2003-03-27, 18:23:39 <tibook>
- 青木淳 最終更新: 2005-02-12, 10:30:09 <61-27-3>
- 仮想関数 最終更新: 2003-10-28, 19:00:20 <61-27-2>
- 設計 最終更新: 2003-05-09, 18:26:09 <tibook>
- Objective-C 最終更新: 2006-02-17, 12:02:13 <phara>
- 抽象データ型 最終更新: 2007-03-16, 15:37:29 <pharm88>
- 本物のプログラマ 最終更新: 2003-08-09, 09:10:20 <192>
- small talk 最終更新: 2003-10-05, 23:14:06 <eaocf-8>
- BlueBook 最終更新: 2006-05-21, 12:46:47 <p4234-i>
- ある OOPL な会話 最終更新: 2006-05-04, 13:36:56 <192>
- CyberFramework 最終更新: 2003-12-03, 21:43:18 <laplace>
- Io 最終更新: 2016-03-18, 11:34:49 <phara2>
- Smalltalk で既約分数クイズ 最終更新: 2017-01-02, 18:46:52 <p403014>
- Soopy 最終更新: 2005-07-10, 00:59:10 <192>
- Smalltalk/Squeak の“きまり文句” 最終更新: 2006-06-01, 13:00:44 <pharm88>
- Slate 最終更新: 2006-04-26, 10:34:16 <khp0591>
- この一行は絶対無二の一行なり 最終更新: 2006-05-21, 17:08:58 <p13168->
- 「結城浩の『Perl クイズ』」を Smalltalk/Squeak で 最終更新: 2004-07-01, 14:45:47 <tibook>
- どうも! パソコンです。 最終更新: 2007-03-02, 14:11:08 <pharm88>
This page has been visited 30546 times.