Smalltalker のジレンマ

私はとてもじゃないけれど Smalltalker と呼べるほど Smalltalk を使っていないのですが、Smalltalk はとても好きです。でも、好きなのに不思議なくらい Smalltalk を使わないのは、Smalltalk がとても使いにくいからです。

Smalltalk はテキストファイルにソースコードを書いて、それをコンパイルするなりインタプリタに食べさせるなりするようなプログラミング言語ではありません。SmalltalkSmalltalk OS とでも言うべき環境中でプログラムを作るようにできていて、その環境中は普通のOSの世界――「なんでもファイル」の代わりに「なんでもオブジェクト」の世界です。

Smalltalkでは 環境中のグローバルな名前(ファイルパスのようなもの..階層化されてないけど)にファイルじゃなくてオブジェクトを置きます。クラスではなくオブジェクトなのがミソで、Smalltalk の世界では データを永続化するためにファイルに落とさなきゃ・・・なんてこともなく、オブジェクトのまま保存できるので楽ちんです。「プログラムの実行毎にオブジェクトを生成して終了で全て破棄なんて」普通のOOPLだと、プログラム中でオブジェクトの生成・構築コードを必ず書く必要がありますが、Smalltalk中だと人間が手でそれをやっちゃってコードを起こしていないなんてことは良くあります。

Smalltalk OS 自体は、普通のOS の サスペンドみたいな感じで動いていて、シャットダウンは無いです。なので一度作ったオブジェクトは 明示的に捨てない限りずーーっと残っていると言うこと。OS にとっての ファーストクラスが ファイルじゃなくて オブジェクトなのが Smalltalk環境です。


Smalltalk 環境のなかで OOP するのはとても気持ちがいい。快感です。それはもう、それはもう楽しいので、Smalltalk が好きで好きでたまらなくなってしまいます。Ruby なんてナンボのもんよと思うわけです。

――が、しかし、私が使っているOS は、世界の中心がファイルなOS です。Smalltalk のプログラムは、プログラムをファイルとして扱えないので、凄く不便。やってられないくらい不便。ちょっとしたツールを作りました・・・までは Smalltalk で不満はないのだけれど、使う段になって 毎度環境ごと立ち上げってどうですよ?トホホ。

もちろんそんなことはいろんな人が思うから既に普通のスクリプト言語のような Smalltalk の実装もあって(完成度は低いけれど)、または Ruby というすてきなスクリプト言語もあって、だから喜び勇んでそちらを使ってみるのだけれどしばらく使うと「こんなの Smalltalkじゃないっ」・・・って思ってしまう。あれだけ望んだテキストファイルにソースコードを書いて、それをクリクリッで実行するなのに「なんだこれは」と思ってしまう。Smalltalk の魂は言語部分だけに宿っている訳じゃない というのが非常にたちが悪いんです。

ここを吹っ切れてしまうと、きっと Smalltalker の仲間入りできるんでしょうねとは思うのですが、なかなか。へたれです、私。