ジェダイへの道 factorを徐々にイジりだす
なぜfactorにしたのか
- 標準Forthにこだわらなくなったから。
- チャック・ムーアからして「ANSIとか悪いことをした。みんなが自分でカスタマイズしてForthを使えばいい」と言っているし、そのために基本構文が簡単なのだし拡張が簡単なのだから使いたいと思う処理系を使えば良いと思うようになりました。
- 作る方としても、音楽用Forthを作りたいので汎用Forthである必要はないし、そのお手本になりそうなのがibnizとRetroになりそうなのでやっぱり標準的なForthではなくて良いかと思うのです。
- いろんな意味でポータブルだから
- 実用性を志向しているから
実際のところどうなの?
これまで散々いろいろなForthの処理系を触っていたので入口のところでは特に戸惑いはありませんでした。Forthは基本はとてもシンプルでどんどん自分で拡張して使う言語だと思います。schemeとかに似ているかも。factorでは{}で配列、[]でオブジェクトを記述できるのが標準的なForthと違うところですが、リスナーからF1キーで呼び出せるブラウザ兼ヘルプがとてもよくできているのでこれを読めば大丈夫。
でも英語が得意過ぎて日本語だとかったるいって人以外は、インフォサイエンスさんのスタートガイド日本語訳に添って一通り試してみるのが一番だと思います。oss.infoscience.co.jp
スタートガイドの「 Your first program」で回文かどうかをチェックするプログラムを作ってみるのですが開発用のイメージファイルを作るところからテストユニットの作成まで、非常に簡潔にまとまっていて使いやすいと思います。
前回のエントリーで「"demos" run」でデモランチャーが走ることは紹介しましたが、これだけでなく「factor\extra」の中にサンプルが大量にあるので「"フォルダ名" run」で色々と動かしてみると面白いです。サンプルがライブラリの場合はC言語でいうところのmainが無いよって言われます。
factorではこのような形でコアファイル、基本ファイル、サンプル+ライブラリがフォルダ単位で管理されているのですが、コアが42ワード、基本が159ワード、ライブラリ+サンプルが257ワード定義されています。言語仕様自体はシンプルでもこれだけライブラリ回りが充実していれば書き捨ての日常業務用スクリプトも書けそうです。