概要

Forthは、手続き型でスタック指向のプログラミング言語であり、対話的な開発環境でもあります。演算は後置記法(逆ポーランド記法とも呼ばれる)で記述され、オペランドを演算子の前に置くため、構文解析が単純になり、非常に小さく効率的なインタプリタとコンパイラを実現できます。プログラマは「word(ワード)」と呼ばれる名前付きの単位を組み合わせてプログラムを作成し、これらは辞書に保存され、実行時に結合・再定義・拡張できます。使用する記法の入門としては、逆ポーランド記法を参照してください。

特徴とアーキテクチャ

Forthを特徴づける主な要素には、データスタックとリターンスタック、最小限のランタイム、そして段階的に解釈とコンパイルを行う仕組みがあります。典型的なForthシステムには次のようなものが含まれます。

  • wordをスレッドコードへ変換する、コンパクトなコンパイラ/インタプリタ
  • 定義が動的に追加される辞書
  • 言語自身の中で新しい制御構造や構文構成を定義できる機能

Forthは連接型言語であり、プログラムを構成することはwordを連結することに相当します。多くの実装は限られたメモリに収まるほど小さく、資源の制約が大きい機器に適しています。

歴史と発展

Forthは1960年代後半にCharles H. Mooreによって作られました。開発は1969年ごろに始まり、ハードウェア制御や迅速な対話型プログラミングのための道具として整えられました。Mooreと他の開発者たちは1970年代から1980年代にかけて言語を洗練させ、標準化された系統と大きく異なる方言の両方を生み出しました。言語の起源となった人物については、Charles H. Mooreを参照してください。

用途と例

Forthは、コンパクトなランタイムと対話性の高さから、初期の組み込みシステム、実験機器、マイコン、制御アプリケーションで広く使われました。技術者や研究者は、Forth環境が提供する即時のフィードバックを高く評価しました。wordはその場で試し、必要に応じて再定義できます。代表的な用途には、デバイスドライバ、リアルタイム制御、テスト、システムプログラミング原理の教育などがあります。多くの歴史的・現代的なForthシステムでは、カーネルに簡単な開発ツールを組み合わせており、この階層化の例はForthシステムに関する資料で説明されています。

記法とプログラミングスタイル

Forthは複雑な優先順位規則に依存しないため、プログラムでは明示的なスタック操作と、短く組み合わせやすいwordが重視されます。演算子の優先順位が後置評価とどう異なるかを知りたい場合は、演算子の優先順位に関する解説を参照できます。典型的なForthコードは、低レベルの基本命令と、対象の作業に合わせたドメイン特化言語のように読める高レベル定義を組み合わせています。

注目される点と影響

Forthの遺産は、その単純さ、拡張性、そして制約のあるハードウェアへの適性にあります。実践的で反復的な開発スタイルを促し、他の対話型・拡張可能な言語設計にも影響を与えました。主流言語ほど広く普及しているわけではありませんが、Forthは現在もホビイストの間や、サイズの小ささとハードウェアを直接制御できることが重要な特殊な産業・組み込み分野で使われています。