HOME

TheInfoList



OR:

The Navy Electronics Laboratory International ALGOL Compiler (NELIAC) is a
dialect A dialect is a Variety (linguistics), variety of language spoken by a particular group of people. This may include dominant and standard language, standardized varieties as well as Vernacular language, vernacular, unwritten, or non-standardize ...
and
compiler In computing, a compiler is a computer program that Translator (computing), translates computer code written in one programming language (the ''source'' language) into another language (the ''target'' language). The name "compiler" is primaril ...
implementation of the
programming language A programming language is a system of notation for writing computer programs. Programming languages are described in terms of their Syntax (programming languages), syntax (form) and semantics (computer science), semantics (meaning), usually def ...
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 The Association for Computing Machinery (ACM) is a US-based international learned society for computing. It was founded in 1947 and is the world's largest scientific and educational computing society. The ACM is a non-profit professional membe ...
(ACM) and a well known
computer scientist A computer scientist is a scientist who specializes in the academic study of computer science. Computer scientists typically work on the theoretical side of computation. Although computer scientists can also focus their work and research on ...
, and supported by Maurice Halstead, the head of the computing center at NEL. The earliest version was implemented on the prototype
AN/USQ-17 The AN/USQ-17 or Naval Tactical Data System (NTDS) computer referred to in Sperry Rand documents as the Univac M-460, was Seymour Cray's last design for UNIVAC. UNIVAC later released a commercial version, the UNIVAC 490. That system was later upgr ...
computer (called ''the Countess'', after Countess
Ada Lovelace Augusta Ada King, Countess of Lovelace (''née'' Byron; 10 December 1815 – 27 November 1852), also known as Ada Lovelace, was an English mathematician and writer chiefly known for her work on Charles Babbage's proposed mechanical general-pur ...
) 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 In computing, assembly language (alternatively assembler language or symbolic machine code), often referred to simply as assembly and commonly abbreviated as ASM or asm, is any low-level programming language with a very strong correspondence bet ...
"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 UNIVAC (Universal Automatic Computer) was a line of electronic digital stored-program computers starting with the products of the Eckert–Mauchly Computer Corporation. Later the name was applied to a division of the Remington Rand company and ...
1107, 490, and 418, and the
IBM International Business Machines Corporation (using the trademark IBM), nicknamed Big Blue, is an American Multinational corporation, multinational technology company headquartered in Armonk, New York, and present in over 175 countries. It is ...
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 In computing, input/output (I/O, i/o, or informally io or IO) is the communication between an information processing system, such as a computer, and the outside world, such as another computer system, peripherals, or a human operator. Inputs a ...
(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 In computer programming, a one-pass compiler is a compiler that processes each compilation unit only once, sequentially translating each source statement or declaration into something close to its final machine code. This is in contrast to a mul ...
architecture which made possible such fast compile times that it compiled 60 to 120 times faster than other
high-level programming language A high-level programming language is a programming language with strong Abstraction (computer science), abstraction from the details of the computer. In contrast to low-level programming languages, it may use natural language ''elements'', be ea ...
s which used
multi-pass compiler A multi-pass compiler is a type of compiler that processes the source code or abstract syntax tree of a program several times. This is in contrast to a one-pass compiler, which traverses the program only once. Each pass takes the result of the prev ...
s. 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 Anti-submarine warfare (ASW, or in the older form A/S) is a branch of underwater warfare that uses surface warships, aircraft, submarines, or other platforms, to find, track, and deter, damage, or destroy enemy submarines. Such operations ar ...
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 carrier An aircraft carrier is a warship that serves as a seagoing airbase, equipped with a full-length flight deck and hangar facilities for supporting, arming, deploying and recovering carrier-based aircraft, shipborne aircraft. Typically it is the ...
s and
cruiser A cruiser is a type of warship. Modern cruisers are generally the largest ships in a fleet after aircraft carriers and amphibious assault ships, and can usually perform several operational roles from search-and-destroy to ocean escort to sea ...
s. Perhaps the most successful NELIAC application was control of the U.S. Navy automated High Frequency Direction Finding network (
Classic Bullseye The AN/FRD-10 is a United States Navy circularly disposed antenna array (CDAA), built at a number of locations during the Cold War for high frequency radio direction finding (High-frequency direction finding, HF/DF) and signals intelligence (SIG ...
) which went into production in 1968 and lasted until the early 1990s. In addition, NEL developed NELOS, a batch
operating system An operating system (OS) is system software that manages computer hardware and software resources, and provides common daemon (computing), services for computer programs. Time-sharing operating systems scheduler (computing), schedule tasks for ...
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
database In computing, a database is an organized collection of data or a type of data store based on the use of a database management system (DBMS), the software that interacts with end users, applications, and the database itself to capture and a ...
s, 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 Portable may refer to: General * Portable building, a manufactured structure that is built off site and moved in upon completion of site and utility work * Portable classroom, a temporary building installed on the grounds of a school to provide a ...
because the language permitted manipulation of binary characters which were dependent on
word A word is a basic element of language that carries semantics, meaning, can be used on its own, and is uninterruptible. Despite the fact that language speakers often have an intuitive grasp of what a word is, there is no consensus among linguist ...
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 In computer programming, an infinite loop (or endless loop) is a sequence of instructions that, as written, will continue endlessly, unless an external intervention occurs, such as turning off power via a switch or pulling a plug. It may be inte ...
would occur. These were the
Achilles' heel An Achilles' heel (or Achilles heel) is a weakness despite overall strength, which can lead to downfall. While the mythological origin refers to a physical vulnerability, idiomatic references to other attributes or qualities that can lead to do ...
s of NELIAC. Many other well-known computer experts like
Niklaus Wirth Niklaus Emil Wirth ( IPA: ) (15 February 1934 – 1 January 2024) was a Swiss computer scientist. He designed several programming languages, including Pascal, and pioneered several classic topics in software engineering. In 1984, he won the Tu ...
made contributions to the project, but ultimately NELIAC fell out of favor after the Navy Department standardized on compilers with commercial support.


References


External links


A syntactic description of BC NELIAC
at the ACM.
Original documents about NELIAC and background information
(archived 2007)
History of NELIAC through 1991

Documentation
on bitsavers.org web-site
Documentation
on softwarepreservation.org web-site {{Authority control Algol programming language family ALGOL 58 dialect