100までの整数から素数を列挙せよ…を Squeak の eToys で


eToys でも id:squeaker さんの Kedama(毛玉)を使って書いてみました。Kedama は、端的には、複数のタートルを同時に使って描くタートルグラフィックス・システムです。


本家 StarLogo の Smalltalk 版である StarSqueak を受けて作られたものですが、タートルの挙動の記述に、ドラッグ&ドロップで誰でも(大嘘)簡単に(大嘘。うわなにをするあwせdrftygふいjこpl;「)プログラミングができる eToys が使えるところが大きな特徴です。


eToys、それ自体に輪をかけて、見た目からして、かなりとっつきにくいシステムなので(失敬!)、正直、私も、用意されているごく基本の機能しか必要でないにもかかわらず、初っ端でくじけそうになったりしましたが、Yamamoto さんのチュートリアルがとてもわかりやすくて救われました。操作だけでなく、プログラム面でも、タートル複製時に生じる障害を回避する手段などについて、おおいに参考にさせていただきました。ありがとうございます。


あと今回は、すぐ Smalltalk 使いたくなるのを、そうとう我慢して“ピュア eToys”しばりにもチャレンジしてみました(^_^;)。ので、結果の抽出がどんくさいですが、どうかお許しあれ、かし。


念のため「eToys」とは、Squeak システムに組み込まれた Smalltalk とは別の処理系で、もちろん Smalltalk で記述されていて、その特性(たとえば徹底した動的性)を大いに活用した特徴(コードを走らせながらソースを変更でき、編集の結果は直ちに動作に反映される、とか)を有してはいますが、文法や言語仕様は Smalltalk とは大きく異なっています(目立つところでは、変数が強い型付きである、とか)。


eToys がそのものズバリ…だったいうわけではありませんが(個人的にはむしろ、いくつかの選択肢の中のひとつに過ぎない eToys で、なし崩し的にプロジェクトが進んでしまっている、といった印象を強く受けていますが、まあ、それはいいとして)、このような非プログラマで向けのの言語処理系を構築するのが、Squeak システムのもともとの目的だったりもします。先だっての まつもとさんとの会食での“死んだ言語”同様、おもしろおかしく語られがちな、アラン・ケイの「Squeak(や Smalltalk)は道具に過ぎない」といったたぐいの発言はこうした文脈も含んでいるはずです。



閑話休題


実行結果(タートルが描きあげた篩)とコード(メインのループ)はこんな感じです。

http://squab.no-ip.com:8080/collab/uploads/61/kedamasieve.png


プロジェクトファイル(eToys プログラム本体)はこちらに置かせていただいております。

Squeak ブラウザプラグイン版(http://squeakland.jp/)がインストール済みなら、たいていの場合、リンクのクリックで起動し WWW ブラウザ内で動かすことができるはずです。ダメでしたら、アプリケーションで開く...か、最悪、Squeak を起動してデスクトップへドロップインで起動できます。お試しください。


Squeak なんかインストールして、環境を汚したくない!(^_^;)…人むけに、念のため、QuickTime ムービーも用意しておきました。


なにせ、Kedama に触れるのは初めてなので、もうちょっと賢い方法があるかもしれません。どうぞ、あしからず。たとえば、毛玉ワールドにはタートルを敷き詰めることもできるので、動かして描かせるのではなく、個々のタートルをビット代わりに、一気に判断させて一発で…ということも、もしかしたら可能かもしれません。


関連: