Arantium Maestum

プログラミング、囲碁、読書の話題

PythonでForth処理系を書く! その1(序)

Forthというプログラミング言語がある。分類としては「スタックマシン型言語」になるだろう。

スタックマシンというのは、データやアドレスをスタックに乗せたり取り出したりすることを基本の操作とするプログラム実行モデルで、有名どころでいうとJava Virtual MachinePython Bytecode Interpreterのような「いったん中間言語としてコンパイルされたものを実行する」ことによく使われている。

Forthはそのスタックマシンを直接操るプログラミング言語だ。

実行モデルがC(というかAlgol)系やML/Haskell的関数型、あるいはLispなどとも大きく違っていて面白い。個人的にもっとよく知りたい言語のひとつだ。

魅力の一つとして、言語処理系としては実装が非常に簡単かつ効率的かつ表現力が高いことが挙げられる。組み込みなどのシステムで、自前でForthを作って使う、ということも十分可能なようだ。

というわけで以前からForth処理系を作ってみたいと思っていたのだが、ある日Kindleでそのものずばりな「Forthを作ってみる」という電子書籍が売っていたのでそれを買ってみた。以下のサイトの内容を書籍化したもののようだ:

Forthを作ってみる - moiの頭の中

読んでみて大体の概要がわかったのでPythonで似たような機能を持つForth Interpreterを実装してみた。

github.com

これから何回かに分けてこの実装過程について書いていきたい。