Self 処理系を色々試してみました

http://research.sun.com/self/

Self やるぞー!と鼻息をぷんぷんさせていたところ、純正 Self はとってもプラットフォームを選ぶことが判明しました。動くのは、

のみという狭さ。悔しい、MacOSX で動くのならば Linux で動いて欲しい。ていうか MacOSXPPCIntel も大丈夫って言ってるのに Solaris については SPARC 以外言及がないのがなんとなくもの悲しいところです。

なぜこんなにプラットフォームを限定しているの?と思うわけですが、これは Self の先進性であったらしい VMJIT で高速化を実現していたから、という事情のようです(つまり各プラットフォーム用に JIT 用意するのが大変とかそういうわけなのだろう、と想像しています)。え、JavaJIT の元が Self にあったりするわけなの? ついでに squeak の Morphic って Self 由来なの?

というわけで、Self はプロトタイプベースを実現した先進性だけでなく、実用性を目指して JIT を実現した、とても夢に溢れた言語であったわけですね。Cの半分くらいの速度で動いていたという話もどこかに書いてありましたから、なかなか大したものです。すごいですよね!

Self 処理系

さてしかし、これでは Self を試せません。そういうわけで純正をあきらめて他の処理系にあたってみました。

というわけで、 Self/x86 もしくは dSelf のみが希望を持てるわけですが、残念ながら dSelf も分散オブジェクトを実現するために Self と 100% 互換というわけにはいかないそうなので涙を飲んで我慢(動作確認まではしました、dSelf は dSelf でなんだか面白そうです)。よって私には Self/x86 しか選択肢はありません。

Self/x86 の使い方

Self/x86x86 であれば一応 linux でも cygwin でも動くそうです。ただしソースからコンパイルするのは難しそうです。というのもどうも古い gcc でしかコンパイル出来ないような感じだからです。なので素直にバイナリパッケージをダウンロードして使いましょう。

http://gliebe.de/self/download.html

tar.gz を展開すると Self という実行ファイルが出来ますので、これを実行すると

Self Virtual Machine Version 4.1.10, Sun 08 Dec 02 16:51:16 Linux
Copyright 1989-2002: The Self Group (type _Credits for credits)

VM#

のように表示されます。ようやく Self が試せますね!やったね!

でも Version 4.1.10 って、大部古いようですけど、大丈夫なのかな。とりあえず Empty.snap をダウンロードしてこれを使ってみます(smalltalk と同じで環境丸ごと保存して使いまわす感じなんですね)。

% ./Self -s Empty.snap

	Welcome to the Self system!  (Version 4.1.5)


Copyright 1992-2002 Sun Microsystems, Inc. and Stanford University.
See the LICENSE file for license information.

Type _Credits for full credits.

VM version: 4.1.10

"Self 1" X I/O Error .. aborting process.

おお、いきなりのエラー。メッセージの示すところはXに接続できないとかそういう事なのでしょうか。これでGUIは絶望的になりましたが、気にしない事にします。

"Self 1" lobby.
lobby

うん、とにかく動きました。不安が募るばかりですが、頑張ります。

まとめ

MacOSXの人はこんなに悩まなくていいから羨しいですね。LinuxWindows の人は Self/x86 で頑張るしかないので、不安を押しのけて頑張りましょう。こういう環境面での制約がなかったら、もっと Self って流行っていたり再流行したりしなかったのかな、と思います。