SqueakSmalltalk


EtoysLink

http://www.mars.dti.ne.jp/~umejava/smalltalk/squeak/

What's "Squeak"? Dan Ingalls, Alan Kayなど、古のSmalltalk-80を開発したメンバが、今再び歴史の表舞台に立つべく集結! 既存のプログラミングの概念を飛び越える全く新しい環境を作り出してくれました。それがSqueakです。

SqueakはもともとAppleの研究所で開発され、Walt Disney Imagineeringを経て、今はSqueak FoundationというNPOが支えています。多くの(真の)プログラマの支持を受け着々と進化し続けています。

Squeakは1997のOOPSLAで衝撃的なデビューを飾りました。下のリンクは会場の雰囲気を良く伝えています。

Report on OOPSLA97   Squeakの特徴、その誕生の経緯などは、OOPSLAで発表された論文、

"Back to the Future --The Story of Squeak, A Practical Smalltalk Written in Itself" に詳しく書かれています。

が、読んでいる時間のない方のために、ひとことで言ってしまいましょう。

Squeakとは「時空を渡り歩く自己増殖型プログラミング環境」なのです。

Squeakの誕生まで ちょっと論文の該当部分を引用します。

1995年12月、Squeakの開発メンバは、技術屋でない普通の人が単に使用するだけでなく自らプログラムできる教育的な開発環境が望まれていると感じていた。PDAやInternetなどの、一般の人に広く使われ、コンパクトさが要求され、ハードウェアやOSが変化する場面でも効果的に動作するものにしたいと考えていた。理想的なシステムとしては、シンプルで、統一したデザインで作られた、小さく移植性の高いカーネルを持ち、新たなソフトウェアの配送の形態にもすぐに対応できるものになるであろうと考えられていた。

ここまできたら通常はJavaを使うことを考えますね。でも、、

当初はJavaを使うことを考えたが、将来性はあるものの現在はまだ未熟で、ライブラリは不安定で、開発環境の実装も限られていた。そしてそれらには我々が思い描くダイナミックな変化を生み出すための機能が欠けていた。

当時のJavaは1.0。まだReflectionもありませんから。で次にあがったのがSmalltalkです。でも、、

Smalltalkは技術的な要求を満たし得るものであったが、グラフックス、サウンド、Smalltalkのエンジン(バーチャルマシン)において我々にとっては十分とは言えず、また作成したソフトウェアを移植したり、インターネットでVMも含めて配布する自由に欠けていた。

多くの商用SmalltalkのVMはJavaのVMに比べると巨大ですからね。。。これは無理もありません。。

ここであきらめないのが彼らの非凡なところです。

このような要求を持つのは我々だけでないと感じていた。オープンで、移植性が高く、柔軟で、かつ実用的なオブジェクト指向の開発環境を求める声が研究部門でのコミュニティではよく聞かれていた。我々が望む全てを実現するのに最良の方法とは、こうした目的にかなったまったく新しいSmalltalkを作り出し、より広いコミュニティでそれを共有していくことであった。

かくしてSqueakの誕生となったわけです。

で、Squeakの作られかたがすごい! このへんが「時空を渡り歩く自己増殖型プログラミング環境」と私がいった所以です。

自己増殖型プログラミング環境 つづいて前述の論文を要約します。 

全く最初からやらねばならないということはなかった。Apple Smalltalk-80が存在していたからである。

むかーしのSmalltalkです。こんなものをよく発掘しましたね。。

Apple Smalltalkはクラスライブラリとイメージファイル(バイナリ化されたオブジェクトの固まり。乱暴な言い方をすればjarファイルみたいなもの)とVMから構成されていた。しかしイメージのフォーマットは古く、VMは68020のアセンブラで書かれていた。移植性を高めるには、VMはCでなければと考えてたが、我々の誰もがCでVMを書きたいとは思わなかった。

このオブジェクト指向の時代に、、、そりゃそうですね。

我々はかつてSmalltalk自身でSmalltalkのコードをBCPLに変換するフォーマッタを書いたこともあり、SmalltalkでVMを書いておいて後にCに変換する方法を取ることにした。この決定により以下のような計画が浮かび上がった。

新たなイメージファイルフォーマットの作成 Smalltalkで書かれた新たなSmalltalk Interpreterの作成 InterpreterをCに変換、コンパイル BCPLはCの先祖です。念のため。

かくして、昆虫が古くなった皮を脱ぎ捨てていくように、新たなSmalltalk、Squeakが生まれてくることになります。

3+4の実行までに1週間。8週間後には新たなInterpreter上でWindowの表示。10週間後にはApple Smalltalkへの依存性をなくし、変換されてできた新たなVM上で新たなイメージが動作するようになった。

このあたりはSmalltalkの生産性の良さを如実に示しています。

古くて誰も見向きもしなかったApple Smalltalk上で、新たなSmalltalkのイメージを開発、さらにSmalltalkで書いたSmalltalk Interpreterを、やはりSmalltalkで書かれたトランスレータでCに変換してコンパイル。コンパイルしてできたVM上で新たなイメージファイルを動かして、またInterpreterをデバック、それを変換して。。。

どうです。まるで輪廻のように循環してるじゃないですか。こりゃすごい。

プログラマはこれによって、最大限の自由を得たことになります。Smalltalkは確かにメモリ管理の方針や、クラス定義や変数のスコープなどの言語仕様的な部分もすべてSmalltalkのクラスライブラリで書かれていますので、もともと非常にカスタマイズ性が高かったといえます。ただしVMの実装に関しては、一般のプログラマにとっては「未知の領域」であり、VMのソースコードを入手できる、Smalltalkベンダなどの特殊な立場でなければ、その仕組みを知ることも触ることもできなかったのです。SqueakではVM自体がSmalltalkで記述されており、それがCに変換される形を取るので、VMが気に入らなければ自分で変更して新たなVMを変換、コンパイルして作成することが可能です。その新たなVMで、Smalltalkを動かしてと、どんどん自分の好きな方向に発展させていくことができるのです。

Cに変換されたVMのソースはさまざまなプラットフォームでコンパイルされ、Squeakのイメージを動作させることのできるプラットフォームはどんどんと増え続けています。

UNIX Linux MacOS 9, X Windows-NT,2000,XP Windows-95,98,Me Windows-CE Dos OS/2 Acorn BeOS Zaurus などなど

これからも増殖していくことでしょう。

Squeakの特徴 フリーの、コンパクト、移植性、拡張性に優れた、新たなSmalltalkの実装 フリーで入手化、どんどんカスタマイズできる! 新たなイメージファイルはコンパクト、1M以下。ポポペで動く! VMのソースコードがぜーんぶSmalltalkで見れる! 強力なマルチメディアサポート BitBlt?フレームワークを大幅に拡張(WarpBlt?)。カラー化されたイメージ操作もお手のもの。 音に関するクラスライブラリの提供。MIDIのコントロール。しゃべる! 様々なコミュニティが機能拡張中! Morphic (SelfからきたGUIフレームワーク)の実装 分散デスクトップ環境Nebraska WebコラボレーションツールSwiki

定番リンク Squeak公式ページ http://www.squeak.org/  チュートリアル http://www.squeak.org/documentation/index.html  Squeak情報交換ページ Squeak Swiki squeakland http://www.squeakland.org/    ダウンロード 正式最新版は http://squeak.org/download/ Squeak 3.0 (#3552) Squeakのインストール  Squeak Browser Plugin のインストール(日本語)(07/04/2002) ブラウザでSqueak が走ります!

VisualWorksNC 5.x

ダウンロード (VWNC) VisualWorksNC 3.1を発見しました 梅澤さんのチュートリアル。 HappySqueaking?   インストールからメタ機能、デザインパターンまで。超高レベルです。

阿部さんのHPより 「多国語化Squeakのホームページ」 電子Toyの記事(Squeakを知りたいっ! 平井夏児さん MacFan?)もあります。 鷲見正人(すみまさと)さんのHP なんちゃって Squeaker's SwikiMorphic? レッスン(もうひとつの Squeak 入門)  Squeak に関するコラボのための場 などがあります。macwireの記事 もあります 大島さんの多国語化Squeakホームページ やまもととおる さん Fun Fun Squeak!! Squeak Tour Play eToy  STACK 

青木さん:Smalltalkソフトウェア開発

SML(Smalltalkers' Salon Mailing List) Squeakメーリングリスト 2チャンネル Squeakスレッド(全部:Ψ Smalltalk/ Squeak 教えろゴルァ Ψ)  Squeak SwikiのLearning to Squeakにリンクされているチュートリアルです ホームワーク(イリノイ大学、Ralph Johnson、Visual Works)

テスティングフレームワーク・ビデオ(VW30) 

 SMLより(阿部さん紹介) Slashdot Japanのスレッド