GikoForth ver. 0.2.3 (Mac OS X 版)
【GikoForthとは】
日本語風オブジェクト指向拡張を施したForth言語です。
PDSのpForth(※1)上にMops(※2)風オブジェクト指向拡張(※3)を取り入れた
ものがベースになっています。
GikoForthはpForthが備えているANSI互換Forthとしての機能以外に、以下のような
機能を備えています。
・Mops風のオブジェクト指向機能。
多重継承をサポートする以外に、mix-inモジュールの定義と継承、メソッド定義を
後から追加、書き換えできるカテゴリ定義などが利用できます。
・レキシカルスコープなブロッククロージャ風の手続きオブジェクトをワード/
メソッド内部で無名定義する機能。
手続きオブジェクトは生成メソッドを利用する事で、参照するローカル変数と所属
するオブジェクトへの参照を環境として保持することができます。
これらによって高階関数などの利用が容易になります。
・非分かち書き日本語風のプログラミング機能。
GikoForthでは日本語のワードやクラス、メソッドなどが定義、使用できます。
標準的なワードやクラスは日本語のエイリアスがすでに定義されています。
これら日本語の識別子はForth標準のワードと同一の辞書に収められているため、
日本語表現とアルファベットによる表現は境目なく混在して使用できます。
日本語でかかれたプログラムは、Forth辞書を利用した最長一致によって、Forth
インタプリタ/コンパイラに渡される前に自動的に分かち書きされるため、人間の
側で分かち書きする必要はありません。
また逆ポーランド記法は日本語文法との親和性が高いため、可読性の高い日本語風
プログラミングが可能になります。
GikoForthが読み取るソースの漢字コードはeuc-jpになっています。
ソースコードの入力にはmi(http://www.asahi-net.or.jp/~gf6d-kmym/)などのeuc-jpの
編集できるエディタを利用して下さい。
※1 pForthはPhil Burk, Larry Polansky, David RosenboomらによるPublic Domain
のANSI互換Forthです。
http://www.softsynth.com/pforth/
※2 1985-1988の間、Kriya SystemsによってMacintosh向けに販売されていた商用
オブジェクト指向ForthであるNeonは、Public Domainになった後2つの子孫を
残しました。一つがYerkで、もう一つがMopsです。
Mopsはオーストラリア人のMichael Horeによって独自の拡張(ネイティブコン
パイル、多重継承など)を施され、Public DomainながらウインドウなどのGUI
を持つMacアプリケーションを開発できる言語として少なくないファンを獲得し
ました。Mac OS Xに対応した最新版が以下のURLからダウンロードできます。
http://www.panix.com/~goshawk/Mops/
※3 Mops風のオブジェクト機能をANS Forth上で実現するための拡張ファイルが、
Andrew McKewanによって1997年に公表されました。(ただし単純継承のみ)
その後、Mopsの作者であるMichael Horeによって、多重継承をサポートする
ように修正された拡張ファイルが公表されました。
以下からそれらのファイルがダウンロードできます。
ftp://ftp.taygeta.com/pub/Forth/Applications/ANS/CLASS10.ZIP
ftp://ftp.taygeta.com/pub/Forth/Applications/ANS/classM10.zip
※※ これらの他にGikoForthはB.J.RodriguezによるBNF Parserを取り込んでいます。
このBNF Parserに関しては以下のURLを参照して下さい。
http://www.jwdt.com/~paysan/screenful.html
http://www.zetetics.com/bj/papers/bnfparse.htm
【ライセンスとか由来とか】
GikoForthは2ちゃんねる(http://www.2ch.net/)のプログラム技術板
(http://pc.2ch.net/tech/)の名無しさん(MopsスレのNo.22)によるネタ言語として
2001年10月頃から開発が始まりました。
Projectと銘打っていますが、いまだに一人です。(-_-;
GikoForthはオープンソースでPublic Domainなソフトウェアです。
ご利用は、自己責任で御自由にお願いします。
質問、問い合わせなどは、2chのMopsスレ
http://pc.2ch.net/test/read.cgi/tech/1000118518/l50
で>>22を召喚するか、gikoforth@s13.xrea.comまでメールして下さい。
【バージョンアップ情報】
ver. 0.2.3 (2002.9.7)
※stringクラスの基本的なメソッドを実装。
::+で結合とか、map、eachも使用可。
※ベクタ配列クラスとリスト内包表記もどきのサポート
vectorクラスは、map,each,filter,eachIndex,zip,zipWith,foldl,foldr,foldl1,foldr1,
scan,take,drop,takeWhile,dropWhile,group,transposeなどのメソッドを持つ。
※インラインメソッド定義が使用可能になった。GikoLib.fthの基本クラスの一部で使用。
※多重継承時のインスタンス変数のオフセット計算がおかしくなるバグの修正。
※objectを継承したクラスは自動的に