N番め

ずいぶん前のこと。コンピュータ雑誌の

N・ビルトのN番めの言語

という一文を読んであははは、と笑ったことがあります。

N.Writh's Nth Language

と原文を思い浮かべると、少しおかしみが通じやすいかもしれません。
今となっては知らない人の方が多いかもしれませんが、Niclaus WirthはPascalの設計と配布で一躍有名になった研究者です。Algol68やPL/Iといった超弩級言語へと時代が突っ走っている中で、彼は非常にコンパクトな言語を作り上げました。その言語の文法は思いつきではなく、チョムスキーの言語理論に基づいた「文脈自由文法」からなっており、拡張BNFと呼ばれる数学的な方法で記述されていました。人間にもわかりやすかったこの文法は、機械にとっても扱いやすく、コンパクトなコンパイラを書くことができました。
Pascalが開発されたのは、プログラムが参考テープや磁気テープでやりとりされていた時代です。現代のようにダウンロードしてきたOSパッケージの中にフリーのCコンパイラが入っている時代とはわけが違います。それぞれの大学のコンピュータセンターのコンピュータに互換性がなければ、新しい言語のコンパイラのソースをもらっても、それを移植するのが一苦労でした。
Wirthの研究室ではのちにP-CODEと呼ばれる小さな中間言語を定義し、その中間言語インタープリタPascalで記述しました。さらに、PascalコンパイラはP-CODEを生成するようにしました。そして、コンパイラを配布する際にはPascalで記述したPascalコンパイラと、P-CODEにコンパイル済みのオブジェクトも配布したのです。この結果、P-CODEインタープリタさえ実装すれば自動的にPascalコンパイラを使えるようになったのでした。
移植のしやすさから、Pascalは研究者の間で野火のように広がりました。最終的にはカリフォルニア大学サンディエゴでUCSD P-SYSTEMというOSが開発されます。これはOS自身がP-CODEで記述されており、非常に移植性に優れていました。一時期、ヒューレット・パッカードはUCSD P-SYSTEMを採用したコンピュータを販売していたこともあります。P-CODE実行エンジンも開発された記憶があります。
Pascalは言語構造が簡潔で移植性が優れていたため、多くの研究者が新しい概念を実装する時のプラットホームにしました。たとえば、Concurrent PascalやObject Pascalが現れました。Wirthの弟子であったPhilippe KahnはBorland社を起業し、Turbo Pascalで一時代を築いたのはよく知られていることです。また、Macintoshの最初の開発環境の開発言語はPascalであり、のちにObject Pascalを使用したオブジェクト指向フレームワーク、MacAppが発表されました。
Wirthはサバティカル休暇で行った先のPARCで見たMesaに感銘をうけ、Modula2を使ったワークステーションLilithを、開発しました。ビットスライス・プロセッサAM2900を採用したLilithの開発にはオシロスコープしか使わなかったと言います。
Wirthはトップダウン構文解析を好み、コンパクトな言語、コンパクトなコンパイラを多く作りました。上の冗談はそこから来ています。
以上、非常に長い前振りでした。そろそろSourceforgeにN番目のプロジェクトを立ち上げます。

/* -----codeの行番号----- */