NELIAC
From Wikipedia, the free encyclopedia
The Navy Electronics Laboratory International ALGOL Compiler or NELIAC is a dialect and compiler implementation of the ALGOL 58 programming language developed by the Naval Electronics Laboratory in 1958.
It was designed for numeric and logical computations and was the first language to provide a bootstrap implementation.
Contents |
[edit] Origin
NELIAC was the brainchild of Harry Huskey — then Chairman of the ACM and a well known computer scientist, and supported by Maury Halstead, the head of the computational center at NEL. The earliest version was implemented on the prototype USQ-17 computer (called the Countess) at the laboratory. It was the world's first self-compiling compiler. This means that the compiler was first coded in simplified form in assembly language "the bootstrap", and then re-written in its own language, compiled by this "bootstrap" compiler, and re-compiled by itself, making the "bootstrap" obsolete.
It is called a variant of ALGOL 58 because of similarities to that language, but, shortly after the ALGOL committee produced other versions of ALGOL, and NELIAC and ALGOL parted ways.
[edit] 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 computer products like the UNIVAC 1107, UNIVAC 490 and UNIVAC 418 including versions for IBM 704 and 709. The production version of NELIAC was a second generation system (for the USQ-20, a modernized and militarized version of the USQ-17), compiled by the first version, but including full decoding of algorithmic expressions and, later, an input-output system missing on all other versions.
The decompiler was a curiosity. The first version ran on the Countess, but it was later ported to the CDC 1604 and to other computers and received some notice in University circles. But, it turned out that there were few programs worthy of decompilation available at the time.
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 architecture which made possible such rapid compile times that it compiled 60 to 120 times faster than other high level languages. The JOVIAL compiler had 14 passes, for example. The simplicity of the language and its extremely fast 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 to implement an experimental anti-submarine shipboard 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. 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.
[edit] NELIAC's end
But, NELIAC programs were not so portable because the language permitted manipulation of binary characters which were dependent on word lengths. In addition the NELIAC language had no input-output schemes. 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.
[edit] Trivia
The looping statement in NELIAC (comparable to the for statement in C) had an unusual feature. It would not stop unless the terminal value was exactly equalled by the index variable; if the index value increased past the terminal value, the loop would run forever.
[edit] References
- "Neliac - A Dialect of Algol", H.D. Huskey et al, CACM 3(8):463-468 (Aug 1960).
- "Machine Independent Computer Programming" Maurice Halstead