forthを使え(その二)

日本語の資料があまりにないのに難儀しそうなのと、
なんといってもプログラミング言語をまともに習得したことない当方としては
「で、いったいそれ使って何が作れるの?(例えばM$-Wordとか)」
というのがいまいちイメージできないのが苦しいのだが、
やはり逆ポーランド記法は魅力的だし…

ということで、今朝もなんとなく検索で追ってみた。

  • Forth Internet Group Home Page*1 <=ってかこれが本家
  • Rubyist のための他言語探訪 【第 8 回】 Forth*2

スタックの考え方はもっともスマートに説明されている。
これは論理学でお師匠様に教わった記法(ゲンツェン式?)にとっても近い。
う〜む。親近感、湧きまくり…。

ちょっと例題。

例えば
0 1 + 2 3 + ×
をスタック単位で考えると

* 初期状態 (スタックは空)
* 0 をスタックに積む (スタック: 0)
* 1 をスタックに積む (スタック: 1 0)
* +演算子がスタックからふたつ値を取り、結果 (1) を一つ積む (スタック: 1)
* 2 をスタックに積む (スタック: 2 1)
* 3 をスタックに積む (スタック: 3 2 1)
* +演算子がスタックからふたつ値を取り、結果 (5) を一つ積む (スタック: 5 1)
* ×演算子がスタックからふたつ値を取り、結果 (5) を一つ積む (スタック: 5)

となるわけだ。わっかりやす〜い。

  • FORTHの入手*3

ふむ。まだ探せば日本語チップスまだまだありそうだな…。
こちらもよい。
Forth32w*4の解説だが、
sed 使うのねぇ〜。

プログラムはBLK形式のファイル(拡張子 .blk)で管理されています。
BLKファイルの中は、400バイト単位で管理されており、最初の400バイトが BLK #0 と呼ばれ
次が BLK #1 と呼ばれます。

sed の初歩的な使い方も解説してくれているし、
sed で書くと、スタックの様子の丸見え感が満載でよいなぁ。

LISPといっっしょで「ま、いいか。何もできなくても。触ってみるだけで楽しそう」
いまはそんな気分です。