JOVIAL | ||
---|---|---|
Desarrollador(es) | ||
Software Engineering Associates[1] | ||
Información general | ||
Paradigma | Por procedimientos, imperativo, estructurada | |
Apareció en | 1960 | |
Diseñado por | System Development Corporation | |
Sistema de tipos | static, strong, safe, structural | |
Implementaciones | MVS, OpenVMS, macOS, Windows, Linux, SPARC, PowerPC, MIL-STD-1750A, other legacy systems | |
Dialectos | J3, J3B-2, J73 | |
Influido por | ALGOL, SAGE | |
Ha influido a | CMS-2, Coral 66, SYMPL | |
JOVIAL es un lenguaje de programación de alto nivel basado en ALGOL 58, especialmente diseñado para su uso en sistemas embebidos (sistemas de cómputo especializados, diseñados para realizar una o varias tareas específica, donde estos normalmente forman parte de un sistema mayor). Este fue un lenguaje de programación de sistemas relevante en los años 60 y 70.[2]
JOVIAL fue desarrollado como un lenguaje de programación lenguaje de programación "de orden superior".[3] Este fue creado en el año 1959 por un equipo en System Development Corporation (SDC), liderado por Jules Schwartz con la finalidad de crear software para la electrónica de la aviación militar.[4]
El nombre JOVIAL es un acrónimo de Jules' Own Version[5] of the International Algebraic Language; International Algorithmic Language (IAL) fue un nombre que se propuso originalmente para ALGOL 58.[6] De acuerdo a Schwartz, al lenguaje se le llamó originalmente OVIAL, pero se rechazo por varios motivos. Fue entences cuando se propuse el nombre JOVIAL, donde la J no aporta ningún significado especial. Se propuso medio en broma que el lenguaje llevara el nombre de Schwartz, puesto que el fue el Presidente del Consejo de Administración, y este nombre no oficial se quedó marcado.[7]
Durante los años 60, JOVIAL fue parte de la serie de proyectos L (L-project) de la milicia estadounidense, específicamente el proyecto ITT 465L Strategic Air Command Control System (el proyecto Strategic Automated Command and Control System (SACCS)), debido a la carencia de lenguajes de programación en sistemas en tiempo real. El 95 por ciento del proyecto SACCS, controlado por el International Telephone & Telegraph (ITT) cuyo software fue escrito por SDC, se implementó en JOVIAL. La parte del software del proyecto tomó dos años y menos de 1400 años de programador, menos en comparación al tiempo dedicado en el proyecto L SAGE.[8]
Entre finales de los años 70 y principios de los 80, la Fuerza Aérea de los Estados Unidos adoptó una estandarización de una unidad central de procesamiento (CPU), con el conjunto de instrucciones MIL-STD-1750A, para el cual se escribieron diversos programas en JOVIAL. Algunas marcas comerciales proporcionaban compiladores y herramientas de programación que permiten compilar programas en JOVIAL para procesadores como el MIL-STD-1750A, entre las que se encuentran Advanced Computer Techniques (ACT), TLD Systems, Proprietary Software Systems (PSS), entre otras.[9][10]
JOVIAL fue estandarizado en el año 1973 dando el estándar MIL-STD-1589 y fue revisado en el año 1984 dando el estándar MIL-STD-1589C. Actualmente se sigue usando para actualizar y mantener software en aviación y vehículos militares antiguos. Hay tres dialectos usados por igual: J3, J3B-2 y J73.
A 2010, USAF JOVIAL Program Office (JPO) ha dejado de mantener y distribuir JOVIAL. El software distribuido por JPO se sigue pudiendo encontrar a través de recursos comerciales en el Software Engineering Associates, Inc., (SEA) al igual que otras combinaciones de procesadores y sistemas operativos como Windows, Linux, Mac OS X en PowerPC, SPARC, VAX, 1750A, PowerPC, TI-9989, Zilog Z800x, Motorola 680x0, IBM System 360, System 370, y System z. Más allá, la compañía DDC-I, la cual adquirió partes de Advanced Computer Techniques, también proporciona compiladores de JOVIAL y herramientas relacionadas a 2020 de 04.[2]
La mayorsia del software implementado en JOVIAL es para sistemas esenciales, donde el mantenimiento es cada vez más complicado. En diciembre de 2014, se denunció que el software proveniente de código en JOVIAL producido en los años 60 fue causa de un fallo mayor en el control de tráfico aéreo de la infraestructura de Reino Unido, y también que la agencia que lo usa, NATS Holdings, tenía qu eenseñar a su personal de informática y telecomunicaciones el lenguaje JOVIAL, de tal forma que pudieran seguir manteniendo su software, el cual no estaba planificado para su reemplazo hasta 2016.[11]
Entre los lenguajes influidos por JOVIAL se incluyen CORAL, SYMPL, Space Programming Language (SPL), y en alguna medida CMS-2.[12] Un subconjunto interactivo de JOVIAL llamado TINT, similar a JOSS, fue desarrollado en los años 60.[7]
JOVIAL incluye características que no se incluyen en el estándar de ALGOL, tales como items (ahora llamados estructuras), arreglos de estructuras, variables de estado (ahora llamadas enumerados) y lenguaje ensamblador en-línea.[13]
También proveía de datos "empaquetados" en tablas. El empaquetado en tablas se refiere a asignación y reserva de estructuras dentro de una entrada de palabras de almacenamiento (bits en una unidad de datos). Esto fue importante por la memoria y almacenamiento limitados en la era de JOVIAL.
La interfaz de la pool de comunicaciones (COMPOOL) en Jovial es similar a las encontradas en lenguajes como PL/I y C.
Algunos ejemplos de sistemas importantes que unan JOVIAL embebido:
El siguiente ejemplo se tomó del manual Computer Programming Manual for the JOVIAL (J73) Language.[3]: 12
PROC RETRIEVE(CODE:VALUE);
BEGIN
ITEM CODE U;
ITEM VALUE F;
VALUE = -99999.;
FOR I:0 BY 1 WHILE I<1000;
IF CODE = TABCODE(I);
BEGIN
VALUE = TABVALUE(I);
EXIT;
END
END
Este ejemplo define una función llamada RETRIEVE
que toma como parámetro de entrada un entero sin signo llamado CODE
y da como salida un valor en coma flotante llamado VALUE
. Esta busca el elementoCODE
en un arreglo de tamaño 1000, llamadoTABCODE
, y entonces asigna el valor encontrado al valor en coma flotante llamado VALUE
. Si no se encuentra el valor, VALUE
toma el valor por defecto de−99999.0
.