This article has multiple issues. Please helpimprove it or discuss these issues on thetalk page.(Learn how and when to remove these messages) (Learn how and when to remove this message)
|
| Navy Electronics Laboratory International ALGOL Compiler (NELIAC) | |
|---|---|
| Paradigm | procedural,imperative,structured |
| Family | ALGOL |
| Designed by | Harry Huskey,Maurice Halstead,Niklaus Wirth |
| Developer | Navy Electronics Laboratory |
| First appeared | 1958; 68 years ago (1958) |
| Typing discipline | static,strong |
| Scope | Lexical |
| Implementation language | Assembly, NELIAC |
| Platform | AN/USQ-17,AN/USQ-20;CDC 1604;UNIVAC1107,490,418;IBM704,709 |
| Influenced by | |
| ALGOL 58 | |
TheNavy Electronics Laboratory International ALGOL Compiler (NELIAC) is adialect andcompiler implementation of theprogramming languageALGOL 58, developed by theNavy Electronics Laboratory (NEL) in 1958.[1]
It was designed for numeric and logical computations and was the first language to provide abootstrap implementation.
NELIAC was the brainchild ofHarry Huskey, then chairperson of theAssociation for Computing Machinery (ACM) and a well knowncomputer scientist, and supported byMaurice Halstead, the head of the computing center at NEL. The earliest version was implemented on the prototypeAN/USQ-17 computer (calledthe Countess, after CountessAda 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 inassembly 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 ofALGOL 58 because of similarities to that language, but within two years, the ALGOL committee produced other versions of ALGOL, and NELIAC and ALGOL diverged.
The compiler was used on the Countess to produce a version for theCDC 1604, and later self-compiled on that machine. Many other versions were produced for commercial computers such as theUNIVAC1107,490, and418, and theIBM704 and709. The production version of NELIAC was a second generation system (for theAN/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, aninput/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 itsportability to other computers,[2] and itsone-pass compiler architecture which made possible such fast compile times that it compiled 60 to 120 times faster than otherhigh-level programming languages which usedmulti-pass compilers. TheJOVIAL 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.[3] Because of memory constraints, the NELIAC application software was later rewritten in assembler code.
NELIAC was used to implement an experimental shipboardanti-submarine warfare system, and was also used for the development of theNational Emergency Command Post Afloat (NECPA) project which developed a strategic command and control system installed onaircraft carriers andcruisers. 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 developedNELOS, a batchoperating 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, includingdatabases, free form queries with a precursor of IBM's GIS, and reporting applications. NECPA and NELOS went to sea in 1966.
However, NELIAC programs were not easilyportable because the language permitted manipulation of binary characters which were dependent onword 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 aninfinite loop would occur. These were theAchilles' heels of NELIAC.
Many other well-known computer experts likeNiklaus Wirth made contributions to the project, but ultimately NELIAC fell out of favor after the Navy Department standardized on compilers with commercial support.
{{cite book}}:ISBN / Date incompatibility (help)