用途 | 趣味・実用 |
---|---|
実行 | 様々 |
日本語 | ○ |
対応環境 | 様々 |
入手 | 様々 |
多くのプログラミング言語、例えば BASIC では、2+3 を
2+3
と書きます。ところが Forth (フォース) 言語では、
2 3 +
と書きます。なんだそりゃ? しかし、ここが Forth の Forth らしいところ なんです。
BASIC のシステムは、「2+3」という全体を見てから 「そうか、2 と 3 を足したいんだな」と判断して、それから実行します。 つまり、その部分を全部解読してからでないと処理が始まりませんし、 カッコなんかがあってややこしい計算になると、それだけでも時間がかかってしまいます。
それに対して、Forth はスタックというしくみを使っています。 スタックは、「ストッキング」のようなものです。そう、女性が履く あの「ストッキング」です。Forth の処理システムは、前から順番に プログラムを見ていって、「2」に出くわすと、とりあえず「2」という数を 「ボール」に書いて「ストッキング」に放り込みます。次に読み進めると 「3」が出てくるので、「ボール」に「3」と書いて「ストッキング」に放り込みます。 次に「+」に出くわすと、これ数ではないので、何かの命令だな、と判断して、 手持ちの「辞書」を見ます。すると、「ストッキング」の中身を 上から 2 つ取り出して足しなさいと書いてあります。 「ストッキング」に手を突っ込むと、まず「3」が出てきて 次に「2」が出てきますね? これを足すと「5」になります。 そこで新しい「ボール」に「5」と書いて、また「ストッキング」に放り込みます。
というわけで、順番に見ていくので、BASIC よりは仕事に取り掛かるのが 早いことになりますが、他にも、Forth では上で出てきた「辞書」に 自分で書き足すことができます。それも、他のシステムのように C 言語を 使わないといけないのではなく、Forth のプログラムのかたちで 書き足すことができるのです。このため、難しい計算でも、一度「辞書」に そのやり方を書き加えておいて、簡単に計算できるようになります。
現在では、Forth に日本語を導入した Mind という 言語もあります。これを使うと先ほどのプログラムは
2と 3を 足す
となります。まさか、これを見て「難しそう」と思う人はいないでしょうね?
Forth にもいろいろな種類が出回っていますが、無償で入手できるものも多くあります。 ここでは、 pForth の MS-DOS 版を紹介します。
MS-DOS 版は、pfthpc19.zip というパッケージに入っているので、 これをダウンロードして、インストールしたいディレクトリに解凍します。これで OK です。
インストールしたディレクトリに pForth.exe というファイルがあるので、 これを実行します。すると、こんなメッセージが出てきます。
PForth V19 pForth loading dictionary from file pforth.dic File format version is 7 Name space size = 120000 Code space size = 300000 Entry Point = 0 Begin AUTO.INIT ------
これで準備完了です。さっきの「2+3」をやってみましょう。
2 3 +
と入力します。それぞれの間にスペースを忘れずに入れてください。 くっつけると、1 つの言葉だと思われてしまいます。「2 3 +」と打ち込んで、 Enter……すると、
ok Stack<10> 5
と表示されます。"ok" は「ここまではちゃんと終わったよ」という意味で、
その次の行にあるのが、現在のスタック、さっきのたとえで言えば
「ストッキング」の様子です。「5」とあるので、「5」と書かれた「ボール」が
あることを示しています。pForth ではこのようにスタックの様子が毎回報告されるので
「やー、計算完了」と思ってしまいますが、すべての Forth システムで
そうだというわけはありません。その場合は、「.
」という「言葉」を
使います。ピリオド、それから Enter。すると、
5 ok Stack<10>
と表示されます。まずスタックにあった「5」が表示されて、
完了を示す「ok」。それからスタックの中身が出ますが、
何もなくなってしまいました。つまり、Forth 風にいうと、「.
」という
「言葉」は、「スタックから 1 つ数をとってきて表示する」という機能を
持っているわけです。
もすこしヤヤコシイことをやると、「(2+3)×4」を計算して表示するには 「2 3 + 4 * .」と実行します。「*」は「かける」の意味です。 よく分からん! と思ったら、1 つうつ度に Enter を押してみてください。 「2」をうって、Enter、「3」をうって Enter、「+」で Enter……という風に。 表示されるスタックの内容を見ると、たしかに「2+3」をやって、 結果に 4 をかけているのがわかると思います。
最初は独特のやり方に戸惑う Forth ですが、慣れてしまうとあら不思議、 ちょっとややこしいことも簡単にできるようになります。一見やりにくそうな スタックの仕組みも、住めば都でけっこう使いやすいことに気づくはずです。 スタックの考え方は今でもあちこちで使われていて、Java の実行環境 (仮想マシン) が スタックを使っていたりするので、スタックの考え方を理解しておくと役立ちます。
そうそう、考案者のムーア氏は天文台職員だったというのも、 なんとなく (イメージ的に) いい感じがしませんか?
用途 | 趣味 |
---|---|
実行 | インタプリタ |
日本語 | × |
対応環境 | Mac/MS-DOS/Amiga/Unix/他 |
入手 | 無償 |
用途 | 汎用 |
---|---|
実行 | インタプリタ? |
日本語 | ? |
対応環境 | Mac |
入手 | 無償 |
用途 | 汎用 |
---|---|
実行 | コンパイラ |
日本語 | ? |
対応環境 | Palm |
入手 | シェアウェア (試用版あり) |
このほかにもご存知の方は、ご一報ください。