# NELIAC

The Navy Electronics Laboratory International ALGOL Compiler (NELIAC) is a dialect and compiler implementation of the programming language ALGOL 58, developed by the Navy Electronics Laboratory (NEL) in 1958.
It was designed for numeric and logical computations and was the first language to provide a bootstrap implementation.

## Origin

NELIAC was the brainchild of Harry Huskey, then chairperson of the Association for Computing Machinery (ACM) and a well known computer scientist, and supported by Maurice Halstead, the head of the computing center at NEL. The earliest version was implemented on the prototype AN/USQ-17 computer (called the Countess, after Countess Ada Lovelace) at the laboratory. It was the world's first self-compiling compiler, a trait called bootstrapping. This means that the compiler was first coded in simplified form in assembly language "the bootstrap", and then rewritten in its own language, compiled by this "bootstrap" compiler, and recompiled by itself, making the "bootstrap" obsolete.
It is considered a variant of ALGOL 58 because of similarities to that language, but within two years, the ALGOL committee produced other versions of ALGOL, and NELIAC and ALGOL diverged.

## Use

The compiler was used on the Countess to produce a version for the CDC 1604, and later self-compiled on that machine. Many other versions were produced for commercial computers such as the UNIVAC 1107, 490, and 418, and the IBM 704 and 709. The production version of NELIAC was a second generation system (for the AN/USQ-20, a modernized and militarized version of the AN/USQ-20), compiled by the first version, but including full decoding of algorithmic expressions and, later, an input/output (I/O) system missing on all other versions.
The decompiler was a curiosity. The first version ran on the Countess, but was later ported to the CDC 1604, and to other computers, and received some notice at some universities. However, it turned out that, at that time, there were few programs worth decompiling.
NELIAC was never intended to be a commercial product. Its primary advantage over other compilers of the day was its portability to other computers, and its one-pass compiler architecture which made possible such fast compile times that it compiled 60 to 120 times faster than other high-level programming languages which used multi-pass compilers. The JOVIAL compiler made 14 passes, for example. The simplicity of the language and its rapid compile times permitted much faster development cycles than other contemporaneous compilers. It was an in-house NEL effort to make possible a more cost-effective solution to the problem of computer system development.
NELIAC was used by the Royal Canadian Navy to develop software for the Command and Control System 280 (used on the DDH-280 destroyers) in the years 1967 to 1971. The Canadian Navy established a Program Generation Centre in Ottawa, Ontario, Canada for this software development. The host computer was the Litton L304F containing 160 kB of memory. Because of memory constraints the NELIAC application software was later rewritten in assembler code.
NELIAC was used to implement an experimental shipboard anti-submarine warfare system, and was also used for the development of the National Emergency Command Post Afloat (NECPA) project which developed a strategic command and control system installed on aircraft carriers and cruisers. Perhaps the most successful NELIAC application was control of the U.S. Navy automated High Frequency Direction Finding network (Classic Bullseye) which went into production in 1968 and lasted until the early 1990s.
In addition, NEL developed NELOS, a batch operating system which provided input-output for magnetic tapes, printers, and telecom equipment, provided sequenced compiling of jobs, and a symbol library permitting linking of very large computer applications and executing them on-line. These included suites of information management programs, including databases, free form queries with a precursor of IBM's GIS, and reporting applications. NECPA and NELOS went to sea in 1966.

## NELIAC's end

However, NELIAC programs were not easily portable because the language permitted manipulation of binary characters which were dependent on word lengths. Further, the NELIAC language had no input-output schemes. Also, its looping statement was unusually strict in that the index variable had to hit the end value exactly, or else an infinite loop would occur. These were the Achilles' heels of NELIAC.
Many other well-known computer experts like Niklaus Wirth made contributions to the project, but ultimately NELIAC fell out of favor after the Navy Department standardized on compilers with commercial support.