El compilador internacional ALGOL del Laboratorio de Electrónica de la Armada ( NELIAC ) es una implementación de dialecto y compilador del lenguaje de programación ALGOL 58 , desarrollado por el Laboratorio de Electrónica de la Armada (NEL) en 1958. [1]
Fue diseñado para cálculos numéricos y lógicos y fue el primer lenguaje en proporcionar una implementación bootstrap .
NELIAC fue una creación de Harry Huskey , entonces presidente de la Association for Computing Machinery (ACM) y un conocido científico informático , y contó con el apoyo de Maurice Halstead, el jefe del centro de computación de NEL. La primera versión se implementó en el prototipo de computadora AN/USQ-17 (llamada Countess , en honor a la condesa Ada Lovelace ) en el laboratorio. Fue el primer compilador autocompilador del mundo, una característica llamada bootstrapping. Esto significa que el compilador se codificó primero en forma simplificada en lenguaje ensamblador "bootstrap", y luego se reescribió en su propio lenguaje, se compiló mediante este compilador "bootstrap" y se recompiló a sí mismo, lo que hizo que el "bootstrap" quedara obsoleto.
Se considera una variante de ALGOL 58 debido a las similitudes con ese lenguaje, pero en dos años, el comité ALGOL produjo otras versiones de ALGOL y NELIAC y ALGOL divergieron.
El compilador se utilizó en el Countess para producir una versión para el CDC 1604 , y más tarde se compiló automáticamente en esa máquina. Se produjeron muchas otras versiones para computadoras comerciales como la UNIVAC 1107 , 490 y 418 , y las IBM 704 y 709. La versión de producción de NELIAC fue un sistema de segunda generación (para el AN/USQ-20 , una versión modernizada y militarizada del AN/USQ-20), compilado por la primera versión, pero que incluía una decodificación completa de expresiones algorítmicas y, más tarde, un sistema de entrada/salida (E/S) que faltaba en todas las demás versiones.
El descompilador era una curiosidad. La primera versión funcionaba en el Countess, pero luego se adaptó al CDC 1604 y a otros ordenadores, y recibió cierta atención en algunas universidades. Sin embargo, resultó que, en aquel momento, había pocos programas que merecieran la pena descompilar.
NELIAC nunca fue pensado para ser un producto comercial. Su principal ventaja sobre otros compiladores de la época era su portabilidad a otras computadoras, [2] y su arquitectura de compilación de una sola pasada que hacía posible tiempos de compilación tan rápidos que compilaba de 60 a 120 veces más rápido que otros lenguajes de programación de alto nivel que usaban compiladores de múltiples pasadas . El compilador JOVIAL hacía 14 pasadas, por ejemplo. La simplicidad del lenguaje y sus rápidos tiempos de compilación permitían ciclos de desarrollo mucho más rápidos que otros compiladores contemporáneos. Fue un esfuerzo interno de NEL para hacer posible una solución más rentable al problema del desarrollo de sistemas informáticos.
La Marina Real Canadiense utilizó NELIAC para desarrollar software para el Sistema de Mando y Control 280 (utilizado en los destructores DDH-280) entre 1967 y 1971. La Marina Canadiense estableció un Centro de Generación de Programas en Ottawa, Ontario, Canadá, para el desarrollo de este software. El ordenador anfitrión era el Litton L304F que contenía 160 kB de memoria. [3] Debido a las limitaciones de memoria, el software de aplicación NELIAC se reescribió posteriormente en código ensamblador.
El NELIAC se utilizó para implementar un sistema experimental de guerra antisubmarina a bordo de buques , y también se utilizó para el desarrollo del proyecto National Emergency Command Post Afloat (NECPA), que desarrolló un sistema de comando y control estratégico instalado en portaaviones y cruceros . Quizás la aplicación más exitosa del NELIAC fue el control de la red automatizada de radiogoniometría de alta frecuencia de la Armada de los EE. UU. ( Classic Bullseye ), que entró en producción en 1968 y duró hasta principios de la década de 1990.
Además, NEL desarrolló NELOS, un sistema operativo por lotes que proporcionaba entrada y salida para cintas magnéticas, impresoras y equipos de telecomunicaciones, proporcionaba compilación secuenciada de trabajos y una biblioteca de símbolos que permitía vincular aplicaciones informáticas muy grandes y ejecutarlas en línea. Entre ellas se incluían conjuntos de programas de gestión de la información, incluidas bases de datos , consultas de formato libre con un precursor del GIS de IBM y aplicaciones de informes. NECPA y NELOS se hicieron a la mar en 1966.
Sin embargo, los programas NELIAC no eran fácilmente portables porque el lenguaje permitía la manipulación de caracteres binarios que dependían de la longitud de las palabras . Además, el lenguaje NELIAC no tenía esquemas de entrada-salida. Además, su declaración de bucle era inusualmente estricta, ya que la variable de índice tenía que alcanzar exactamente el valor final, o de lo contrario se produciría un bucle infinito . Éstos eran los talones de Aquiles de NELIAC.
Muchos otros expertos en informática de renombre, como Niklaus Wirth, contribuyeron al proyecto, pero finalmente NELIAC cayó en desgracia después de que el Departamento de Marina estandarizara los compiladores con soporte comercial.