JOVIAL es un lenguaje de programación de alto nivel basado en ALGOL 58 , especializado en el desarrollo de sistemas integrados (sistemas informáticos especializados diseñados para realizar una o varias funciones dedicadas, normalmente integrados como parte de un dispositivo más grande y completo, que incluye piezas mecánicas). Fue un importante lenguaje de programación de sistemas durante las décadas de 1960 y 1970. [2]
JOVIAL fue desarrollado como un nuevo lenguaje de programación de "alto nivel" [3] : 1 a partir de 1959 por un equipo de System Development Corporation (SDC) encabezado por Jules Schwartz para componer software para la electrónica de aviones militares. [4]
El nombre JOVIAL es un acrónimo de la propia versión de Jules [5] del lenguaje algebraico internacional ; Lenguaje Algorítmico Internacional (IAL) fue un nombre propuesto originalmente para ALGOL 58 . [6] Según Schwartz, el lenguaje originalmente se llamó OVIAL , pero se opuso a esto por varias razones. Luego se sugirió JOVIAL , sin que se le atribuye ningún significado a la J . En tono de broma, se sugirió que el idioma llevara el nombre de Schwartz, ya que él era el presidente de la reunión , y este nombre no oficial se mantuvo. [7]
Durante la década de 1960, JOVIAL fue parte de la serie de proyectos L militares de EE. UU ., en particular el Sistema de control de comando aéreo estratégico ITT 465L (el proyecto Sistema de control y comando estratégico automatizado (SACCS)), debido a la falta de programación informática en tiempo real. Idiomas disponibles. Alrededor del 95 por ciento del proyecto SACCS, gestionado por International Telephone & Telegraph (ITT) con software escrito principalmente por COSUDE, fue escrito en JOVIAL. El proyecto de software tomó dos años y menos de 1.400 años de programador, menos de la mitad del tiempo equivalente en el proyecto SAGE L. [8]
A finales de la década de 1970 y principios de la de 1980, la Fuerza Aérea de los Estados Unidos adoptó una unidad central de procesamiento (CPU) estandarizada, la MIL-STD-1750A , y se construyeron programas JOVIAL posteriores para ese procesador. Varios proveedores comerciales proporcionaron compiladores y herramientas de programación relacionadas para construir JOVIAL para procesadores como el MIL-STD-1750A, incluidas técnicas informáticas avanzadas (ACT), sistemas TLD , sistemas de software patentados (PSS) y otros. [9] [10]
JOVIAL fue estandarizado durante 1973 con MIL-STD-1589 y fue revisado durante 1984 con MIL-STD-1589C . Todavía se utiliza para actualizar y mantener software en vehículos y aviones militares más antiguos. Hay tres dialectos de uso común: J3, J3B-2 y J73.
A partir de 2010 [actualizar], JOVIAL ya no es mantenido ni distribuido por la Oficina del Programa JOVIAL (JPO) de la USAF. El software anteriormente distribuido por la JPO todavía está disponible a través de recursos comerciales en Software Engineering Associates, Inc., (SEA), al igual que otras combinaciones de procesadores host/destino, incluidos Windows , Linux , Mac OS X en PowerPC , SPARC , VAX , 1750A , PowerPC. , TI-9989 , Zilog Z800x , Motorola 680x0 e IBM System 360 , System 370 y System z . Además, DDC-I , que adquirió partes de Advanced Computer Techniques, también enumera los compiladores JOVIAL y herramientas relacionadas a partir de abril de 2020 [actualizar]. [2]
La mayor parte del software implementado en JOVIAL es de misión crítica y el mantenimiento es cada vez más difícil. En diciembre de 2014, se informó que el software derivado del código JOVIAL producido en la década de 1960 estuvo involucrado en una falla importante de la infraestructura de control de tráfico aéreo del Reino Unido , y que la agencia que lo utiliza, NATS Holdings , estaba teniendo que capacitar a sus Personal informático de JOVIAL para poder dar mantenimiento a este software, cuya sustitución no estaba prevista hasta 2016. [11]
Los lenguajes influenciados por JOVIAL incluyen CORAL , SYMPL , Space Programming Language (SPL) y, hasta cierto punto, CMS-2 . [12] En la década de 1960 se desarrolló un subconjunto interactivo de JOVIAL llamado TINT, similar a JOSS . [7]
JOVIAL incluye características que no se encuentran en ALGOL estándar, como elementos (ahora llamados estructuras ), matrices de elementos, variables de estado (ahora llamadas enumeraciones ) y lenguaje ensamblador en línea . [13]
También incluía disposiciones para datos "empaquetados" dentro de tablas. El empaquetado de tablas se refiere a la asignación de elementos dentro de una entrada a palabras de almacenamiento (bits en una unidad de datos). Esto era importante con respecto a la memoria y el almacenamiento limitados de los sistemas informáticos de la era JOVIAL.
El Communication Pool (COMPOOL) en Jovial es similar a las bibliotecas de archivos de encabezado para lenguajes como PL/I y C.
Los sistemas notables que utilizan el software JOVIAL integrado incluyen:
El siguiente ejemplo está tomado del Manual de programación de computadoras para el lenguaje JOVIAL (J73). [3] : 12
PROC RECUPERAR(CÓDIGO:VALOR); COMENZAR CÓDIGO DEL ARTÍCULO U; VALOR DEL ARTÍCULO F; VALOR = -99999.; PARA I:0 POR 1 MIENTRAS I<1000; SI CÓDIGO = TABCODE(I); COMENZAR VALOR = TABVALOR(I); SALIDA; FIN FIN
Este ejemplo define un procedimiento llamado RETRIEVE
que toma un argumento de entrada entero sin signo CODE
y un argumento de salida de punto flotante VALUE
. Busca en la matriz de 1000 elementos TABCODE
una entrada que coincida CODE
y luego establece la variable de punto flotante VALUE
en el elemento de la matriz TABVALUE
que tiene el mismo índice de matriz coincidente. Si no se encuentra ningún elemento coincidente, VALUE
se establece en −99999.0
.