vieweditattachhistorytopchangessearchhelp

第01回


■SqueakではじめるSmalltalk入門   第1回


 オブジェクト指向の歴史や参考書には必ずと言っていいほど登場するSmalltalk。ですが、実際にコードを組んだり、処理系をいじったことがある人は少ないようです。この連載は、簡単に入手でき、Smalltalk処理系としても使えるSqueakを用いて、Smalltalk、ひいてはそれが実現する由緒正しくもお手軽な、オブジェクト指向プログラミングの世界を楽しんでいただこうという趣向で進めてゆきたいと思います。

 まずは意外と知られていない、Smalltalkの歴史から。

 Smalltalkは、GUIベースの統合化開発環境(IDE)「Smalltalk-80」として'80年代初頭に「BYTE」誌に特集が組まれるなどして、センセーショナルなデビューを飾ります。開発開始自体は、それからさかのぼること十余年と、FORTRAN、LISP、BASICに次ぐ比較的長い歴史を持つ古い言語です。プロトタイプこそミニコンで動作するBASICで作られましたが、比較的小型で安価で高性能なAltoがチャック・サッカーの手により作られるとすぐに、Cの前身と言われるBCPLで移植され、Smalltalk自身でGUIを記述することも可能な処理能力を得て、それをよりどころに本格的な進化を開始します。

 Smalltalk誕生以前にすでに、ALGOLを拡張したSIMULAという言語により「クラス」と「オブジェクト」という言語機能は実現されていました。しかしこの時点では、いわゆる“オブジェクト指向”という考え方はまだなかったようです。アラン・ケイは、オブジェクトが動的に関数を実行する様子を、まるで生物やその細胞がなにかの刺激に反応するかのようなイメージになぞらえて彼のオブジェクト指向、つまり「オブジェクトにメッセージを送信して、なにかをさせる」というメタファを言語に取り入れるという考え方を確立します。それをダン・インガルスがかたちにしたのが「Smalltalk」というわけです。

 なお、現在の“オブジェクト指向”は、このメッセージ送信メタファに加えて、後にビアルネ・ストラウストラップがC++で利用可能とした「カプセル化」「継承」「多態性」、つまり抽象データ型を発展させた問題解決手法を組み合わせたものとして語られます。C++はSmalltalkの影響は受けていない(ことになっている)ので、それぞれの言語のユーザーによる異文化交流の結果、両言語のコンセプトを便宜的に(ある意味、それぞれの生みの親であるケイやストラウストラップの意向を無視するかたちで)組み合わせたものが広まったのが、どうやら今の“オブジェクト指向”の正体のようですね。

 閑話休題。

 Smalltalkは、およそパーソナルコンピューティングで必要とされるであろうあらゆるものをオブジェクト指向、ここではつまり「オブジェクトに対するメッセージ送信」により実現できないかというチャレンジのもと、開発が進められました。たとえば、3+4も「3というオブジェクトに、+4というメッセージを送る」と解釈し、そのように実装する…というところから始まって、if-then-elseといった制御構造も、メモリやプロセスの管理といったOSの仕事も、果てはGUIまで、すべてをオブジェクト指向で実現して見せ、オブジェクト指向の問題解決手法としての有効性のアピールに成功します。

 そんなふうに進化を遂げたSmalltalkは、'70年代中盤にもなると、単なる言語処理系ではなく、GUIベースのOSの様相を呈してきます。言うまでもなく、これが(暫定的ながら)アラン・ケイの目指した「ダイナブック環境」そのもの、というわけです。ここからは皆さんよくご存じのとおり。残念ながらSmalltalkをOSとしたAltoが製造販売されることはなく、Altoはダイナブックとは直接関係のないStarというシステムを搭載したワークステーションに技術転用され、試作機としての使命を全うします。

 Smalltalkは言語してもOSとしても(もちろんそこから身をやつしたIDEとしても…)特筆すべき点を多数持っていましたが、いかんせん富豪的で高速処理に向かず、なおかつ非常に高価であったため評価はされども普及することはありませんした。Smalltalk-80は、その後、名前を「VisualWorks」と変え、販売元もCincomに移りましたが現在も健在で今なお、言語・処理系としての進化を続けています。現在も相変わらず高価ですが、非商用に限り無償です。

 Squeakは、Smalltalk-80の販売直前版(v1。販売されたのはv2から)をAppleがMac Plus用に移植した「Apple Smalltalk」をベースに派生的に作られた、新しいけど中身は古い、フリーでオープンなSmalltalk環境です。'90年代半ばごろ、当時AppleフェローとしてAppleに在籍していたアラン・ケイの指導のもと、ふたたびダン・インガルスらPRAC時代のメンバーがタッグを組み、その作業に当たりました。

 Squeakを“蘇生”させた本来の目的は「Squeak eToys」という非開発者向けのビジュアルプログラミング言語(Smalltalkとは言語仕様が異なる別言語)とその処理系を構築することにありますが、eToys利用にこだわらなければ、純粋なSmalltalk環境として使うこともできます。そんなSqueakは、Smalltalkerと呼ばれるSmalltalk-80以降の正統派プログラマには古くさいと不評です。しかし一方で、すっかりIDE然とした姿が板についてしまったVisualWorksより、かつてジョブズが見た“Alto OS”にずっと近い存在だとも言え親しみが持てます。本連載では、このSqueakを使って、現在に蘇った暫定ダイナブック環境における“理想のプログラミングの世界”を体験していただきましょう。

 次回は、Squeakのインストールとセットアップです。

このページを編集 (4596 bytes)


Congratulations! 以下の 1 ページから参照されています。

This page has been visited 2275 times.