海軍電子研究所国際ALGOLコンパイラ(NELIAC)は、1958年に海軍電子研究所(NEL)によって開発されたプログラミング言語ALGOL 58の方言およびコンパイラ実装です。 [ 1 ]
これは数値計算と論理計算のために設計され、ブートストラップ実装を提供する最初の言語でした。
NELIACは、当時Association for Computing Machinery(ACM)の会長であり、著名なコンピュータ科学者であったハリー・ハスキーの発案によるもので、 NELの計算センター長であったモーリス・ハルステッドの支援を受けていました。初期バージョンは、研究所のプロトタイプAN/USQ-17コンピュータ(エイダ・ラブレス伯爵夫人にちなんでCountessと呼ばれた)に実装されました。これは世界初の自己コンパイル型コンパイラであり、ブートストラップと呼ばれる特徴を備えていました。つまり、コンパイラはまずアセンブリ言語「ブートストラップ」で簡略化された形でコーディングされ、その後独自の言語で書き直され、この「ブートストラップ」コンパイラによってコンパイルされ、さらに自身によって再コンパイルされることで「ブートストラップ」が不要になるという仕組みでした。
類似点が多いことからALGOL 58の派生版とみなされているが、2年以内にALGOL委員会はALGOLの他のバージョンを作成し、NELIACとALGOLは分岐していった。
このコンパイラはCountess号で使用され、CDC 1604用のバージョンが作成され、その後、そのマシン上で自己コンパイルされました。UNIVAC 1107、490、418、IBM 704、709などの商用コンピュータ向けに、他にも多くのバージョンが作成されました。NELIAC の製品版は第2世代システム(AN/USQ-20用、AN/USQ-20の近代化および軍事化バージョン)であり、第1バージョンでコンパイルされましたが、アルゴリズム式の完全なデコード機能と、後に他のすべてのバージョンにはない入出力(I/O)システムが含まれていました。
この逆コンパイラは、当時としては珍しい存在だった。最初のバージョンはCountess上で動作したが、後にCDC 1604や他のコンピュータにも移植され、一部の大学で注目を集めた。しかし、当時、逆コンパイルする価値のあるプログラムはほとんど存在しなかったことが判明した。
NELIACは商用製品として開発されたものではありませんでした。当時の他のコンパイラに対する主な利点は、他のコンピュータへの移植性[ 2 ]と、マルチパスコンパイラを使用する他の高級プログラミング言語よりも60~120倍高速なコンパイル時間を可能にするワンパスコンパイラアーキテクチャでした。たとえば、 JOVIALコンパイラは14パスを実行していました。言語のシンプルさとコンパイル時間の速さにより、同時代の他のコンパイラよりもはるかに速い開発サイクルが可能になりました。これは、コンピュータシステム開発の問題に対するより費用対効果の高いソリューションを実現するためのNEL社内の取り組みでした。
NELIACは、1967年から1971年にかけて、カナダ海軍が指揮統制システム280(DDH-280駆逐艦で使用)のソフトウェアを開発するために使用されました。カナダ海軍はこのソフトウェア開発のために、カナダのオンタリオ州オタワにプログラム生成センターを設立しました。ホストコンピュータは、160 kBのメモリを搭載したLitton L304Fでした。[ 3 ] メモリの制約のため、NELIACアプリケーションソフトウェアは後にアセンブラコードで書き直されました。
NELIACは、実験的な艦載対潜水艦戦システムの実現に使用されたほか、航空母艦や巡洋艦に搭載される戦略的な指揮統制システムを開発した国家緊急指揮所海上(NECPA)プロジェクトの開発にも使用された。おそらくNELIACの最も成功した応用例は、1968年に運用が開始され、1990年代初頭まで続いた米海軍の自動高周波方向探知ネットワーク(クラシック・ブルズアイ)の制御であろう。
さらに、NELはバッチオペレーティングシステムであるNELOSを開発しました。NELOSは、磁気テープ、プリンタ、通信機器の入出力機能、ジョブの順序付きコンパイル機能、そして非常に大規模なコンピュータアプリケーションをリンクしてオンラインで実行できるシンボルライブラリを提供しました。これには、データベース、IBMのGISの前身となる自由形式クエリ、レポートアプリケーションなどの情報管理プログラム群が含まれていました。NECPAとNELOSは1966年に運用を開始しました。
しかし、NELIACプログラムは、ワード長に依存するバイナリ文字の操作を可能にする言語であったため、移植性に乏しかった。さらに、NELIAC言語には入出力方式がなかった。また、ループ文の制約が非常に厳しく、インデックス変数が終了値に正確に達しなければ無限ループが発生してしまうという問題があった。これらがNELIACの弱点であった。
ニクラウス・ヴィルトをはじめとする多くの著名なコンピュータ専門家がこのプロジェクトに貢献したが、最終的に海軍省が商用サポート付きのコンパイラを標準採用したことで、NELIACは支持を失っていった。
{{cite book}}ISBN /日付の不一致(ヘルプ)