Forth
スタックを中心に据えた極めて小さな言語。限られたメモリの組み込み機器や天文機器で使われ、独特の思想を持つ。
時代背景
Forth発明者Charles H. Moore本人を含む共著論文『The Evolution of Forth』(Rather・Colburn・Moore共著)によれば、Mooreのプログラミング経歴は1950年代後半、スミソニアン天体物理観測所での軌道要素・衛星位置の計算プログラムから始まった。大量のカードで構成されたソースコードの再コンパイルを避けるため、カードを読んでプログラムを制御する簡易インタプリタを開発。これが後のForthに受け継がれる、単語をスペース区切りで読み取るコマンドやIF…ELSE構文の原型になったという。1968年、ニューヨーク州アムステルダムのMohasco Industriesに移ったMooreは、IBM 1130ミニコンピュータ向けのコンピュータグラフィックスプログラムを開発する中で、Algolで書いていたチェスプログラムを新しい言語に書き換えた。
名前の由来
共著論文によれば、FORTHという名前は『第四(第4次)世代コンピュータ向けのソフトウェア』を示唆する意図で名付けられた。Mooreは第4世代コンピュータを、分散した小型コンピュータ群によって特徴づけられるものと捉えていたという。当時使っていたオペレーティングシステムがファイル名を5文字までに制限していたため、『FOURTH』から『U』の文字が省かれて『FORTH』になったと論文は説明している。FORTHは1970年代を通じて大文字表記が使われていたが、これは当時の入出力装置が大文字専用のものが多かったためで、小文字が広く使えるようになった1970年代末以降『Forth』という表記が一般化した。論文は、Forthという語がそもそも頭字語ではなかったため、小文字表記への移行が自然だったと述べている。
仕組み
共著論文によれば、IBM 1130上でForthを使ったグラフィックス開発の経験からMooreはFortran環境よりForth環境の方が優れていると考え、1130向けのコンパイラへと発展させた。ここでループ命令、ソースコードを1024バイトのブロック単位で保持し管理する仕組み、そして今日のForthで見られるコンパイラ機能の大部分が追加された。特に重要なのは『辞書(dictionary)』の導入で、手続きに名前が付けられるようになり、インタプリタが名前のリンクリストを検索してマッチするものを探す仕組みになった。辞書エントリの中には実行すべきコードのアドレスを持つ『コードフィールド』があり、これは間接スレッデッドコードの実装であり、この手法に関するDewarの論文がCommunications of the ACMに掲載される5年も前から使われていたと論文は指摘している。
文化的な位置づけ
共著論文によれば、Moore自身にとってForthは既存のソフトウェアツールへの個人的な反発として生まれた。彼は当時の大型計算機に付属するソフトウェアを、アセンブラ・スーパーバイザ・コンパイラ・アプリケーションプログラムという階層構造を持つ『言語のバベルの塔』のようなものだと捉えていたという。Mooreはこの階層全体を、最小限の文書化だけで済む単一の層に置き換えることを構想し、生涯を通じて『シンプルに保て(Keep it simple!)』という『基本原則』を宗教的なまでに貫いたと論文は記している。この原則には『投機するな(Do not speculate!)』『自分でやれ(Do it yourself!)』という2つの派生原則も伴っていたという。