コンパイラ構築の歴史 - 百科事典

コンピューティングにおいて、コンパイラとは、プログラミング言語やコンピュータ言語(ソース言語)で書かれたソースコードを、別のコンピュータ言語(ターゲット言語、通常オブジェクトコードやマシンコードとして知られるバイナリ形式)に変換するコンピュータプログラムです。ソースコードを変換する最も一般的な理由は、実行可能プログラムを作成することです。ハイレベルプログラミング言語で書かれたどんなプログラムも、実行される前にオブジェクトコードに翻訳されなければなりません。したがって、そのような言語を使用するすべてのプログラマーは、コンパイラやインタプリタ、場合によっては両方を使用します。コンパイラの改善は、実行可能プログラムに多くの改善された機能をもたらすことができます。

1970年代後半に発表された生産品質コンパイラ・コンパイラは、今でも広く使用されているコンパイラの組織の原則(例えば、前処理が構文と意味を処理し、バックエンドがマシンコードを生成する)を導入しました。

第1世代のコンパイラ
初期のコンピュータのソフトウェアは主にアセンブリ言語で書かれ、その前に直接マシンコードで書かれていました。プログラマーにとっては、ハイレベル言語を使用する方が生産性が高く、ハイレベル言語で書かれたプログラムは異なる種類のコンピュータで再利用できるためです。しかし、コンパイラが確立されるまでには時間がかかりました。なぜなら、コンパイラは手書きアセンブリよりもパフォーマンスが悪いコードを生成し、それ自体が恐ろしい開発プロジェクトであり、初期のコンピュータの非常に限られたメモリ容量が実際のコンパイラの実装に多くの技術的な問題を引き起こしたからです。

1942年から1945年まで、コンラート・ツーゼはコンピュータの最初のハイレベル言語であるPlankalkülを開発しました。彼はプログラムの数学的表現を自動的に機械読取可能な穿孔フィルムに変換する「Planfertigungsgerät(計画組立装置)」を想像しました。しかし、その言語の最初の実際のコンパイラは数十年後になるまで実装されませんでした。

1949年から1951年まで、ヘインツ・ルーティッシャーゼはハイレベル言語および自動翻訳者であるSuperplanを提案しました。彼のアイデアは後にフリードリヒ・L・バウアーやクlaus Samelsonによって洗練されました。

最初の実用的なコンパイラは、1951年に博士論文として書かれたCorrado Böhmによって開発されました。これは、世界中で最初に授与されたコンピュータサイエンスの博士号の1つでした。

最初に実装されたコンパイラは、Grace Hopperによって「コンパイラ」という用語を初めて使ったA-0システムで、ローダーやリンカーとして機能したものです。彼女は1952年にマンチェスター大学でMark 1コンピュータ用に最初の現代的なAutocodeおよびコンパイラを開発しました。IBMのJohn W. Backusが率いるFORTRANチームは、1957年に最初の商業用コンパイラを発表し、その開発には18人年が費やされました。

最初のALGOL 58コンパイラは、1958年の終わりまでにFriedrich L. Bauer、Hermann Bottenbruch、Heinz Rutishauser、Klaus SamelsonによってZ22コンピュータ用に完成しました。Bauerらは前年、Sequentielle Formelübersetzung(並列形式変換)のコンパイラ技術に取り組んでいました。

1960年までには、拡張されたFortranコンパイラであるALTACがPhilco 2000に利用可能となり、1960年代の中盤にはIBMおよびPhilcoのコンピュータアーキテクチャの両方でFortranプログラムがコンパイルされた可能性があります。最初に知られているプラットフォーム間のハイレベル言語はCOBOLであり、1960年12月にUNIVAC IIおよびRCA 501の両方でCOBOLプログラムがコンパイルおよび実行されたデモが行われました。

自ホストコンパイラ
他のソフトウェアと同様に、ハイレベル言語でコンパイラを実装することには利点があります。特に、コンパイラは自ホスト(つまり、コンパイルする言語で書かれている)と呼ばれることができます。自ホストコンパイラを構築することは、ブートストラッピング問題であり、つまりその言語の最初のそのようなコンパイラは、手書きのマシンコード、別の言語で書かれたコンパイラによってコンパイルされたもの、またはコンパイラのソースをインタプリタで自分自身でコンパイルすることになります。

コラード・ボームの博士論文
コラード・ボームは、1951年に提出された博士論文で、そのマシン上でその言語をコンパイルするための言語、マシン、および翻訳方法を開発しました。彼は、そのコンパイラをその自身の言語で説明だけでなく、初めてそのコンパイラをその自身の言語で定義しました。その言語は興味深いものであり、すべての文(入力文、出力文、制御文を含む)は割り当て文の特別なケースです。

NELIAC
海軍電子実験室国際ALGOLコンパイラ(NELIAC)は、1958年に海軍電子実験室によって開発されたALGOL 58プログラミング言語の方言およびコンパイラ実装です。NELIACは、ACMの会長であり著名なコンピュータサイエンティスト(後にニクラス・ワイアーirthの学術的な監督者)であるハリー・ハスケイのアイデアであり、NELの計算センターの長であるマウリー・ハルステッドによってサポートされました。最も初期のバージョンは、実験室のプロトタイプUSQ-17コンピュータ(カウンタスとして知られる)上に実装されました。それは世界で最初の自コンパイルコンパイラであり、コンパイラはまずアセンブリ言語(ブートストラップ)で簡略化された形式でコード化され、その後、その