JOVIAL

lenguaje de programación

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
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

Historia editar

 
"Computer Programming Manual for the Jovial (J73) Language"

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]

 
Pin mostrando como Advanced Computer Techniques hizo compiladores para JOVIAL.

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]

Influencia editar

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]

Características editar

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.

Applications editar

Algunos ejemplos de sistemas importantes que unan JOVIAL embebido:

Ejemplo editar

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 elementoCODEen 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.

Referencias editar

  1. «Software Engineering Associates, Inc. (SEA)». 
  2. a b «Mature Development Systems, Field Proven on Hundreds of Applications». DDC-I. Phoenix, Arizona. 2020. Consultado el 22 de abril de 2020. 
  3. a b Softech, Inc. (Junio de 1981). Computer Programming Manual for the JOVIAL (J73) Language. Rome, Nueva York: Rome Air Development Center. p. 1. Archivado desde el original el 29 de julio de 2018. Consultado el 16 de mayo de 2018. 
  4. Schwartz, Julio I. (7 de abril de 1989). «Oral History interview with Jules I. Schwartz». Charles Babbage Institute (Universidad de Minnesota).  Schwartz trabajó para la RAND Corporation en varios proyectos relacionados con la defensa; específicamente en Semi-Automatic Ground Environment (SAGE) y en JOHNNIAC. Cuando RAND organizo el System Development Corporation, Schwartz fue a la nueva compañía. En la mayor parte de la entrevista, Schwartz describe su asociación con SAGE, su participación en el laboratorio de computación para el acceso concurrente a recursos en el ordenador AN/FSQ-32, en redes de ordenadores, en proyectos de control de sistemas (como por ejemplo TDMS), y sus interacciones con J. C. R. Licklider, Lawrence G. Roberts y Robert Saxton Taylor. El habla sobre su posición en el futuro en la Computer Sciences Corporation.
  5. «Ed and Kay, JOVIAL Pioneers». jovial.com. Consultado el 23 de febrero de 2021. 
  6. Shaw, Christopher J. (1 de diciembre de 1963). «A specification of JOVIAL». Communications of the ACM 6 (12): 721-736. ISSN 0001-0782. S2CID 1427629. doi:10.1145/763973.763978. 
  7. a b Schwartz, Julio I. (8 de agosto de 1978). «The Development of Jovial». ACM SIGPLAN Notices 13 (8): 203. S2CID 17913060. doi:10.1145/960118.808385. Consultado el 28 de enero de 2015. 
  8. Campbell-Kelly, Martin (2003). From airline reservations to Sonic the Hedgehog: a history of the software industry. Cambridge, Massachusetts: MIT Press. pp. 46-7. ISBN 0-262-03303-8. 
  9. Schachter, Oscar (7 de mayo de 2004). «Oral history interview with Oscar Schachter». Charles Babbage Institute (Universidad de Minnesota): 17. 
  10. «JOVIAL (J73) and MIL-STD-1750A ISA Software Support Tools». Periódico Ada–JOVIAL (High Order Language Control Facility, Wright-Patterson AFB, U.S. Air Force). Septiembre de 1993. pp. 21-24. 
  11. Rayner, Gordon (12 de diciembre de 2014). «UK flights chaos: Air traffic control computers using software from the 1960s». Daily Telegraph. Consultado el 21 de abril de 2020. 
  12. Digital Computer Basics Rate Training Manual, NAVEDTRA 10088-B, United States Navy, 1978 .
  13. Halang, Wolfgang A.; Stoyenko, Alexander D. (1991). Constructing Predictable Real Time Systems. Springer Verlag. p. 31. ISBN 978-1-4615-4032-8. 
  14. «Jovial to smooth U.S. Air Force shift to Ada». Defense Electronics. 1 de marzo de 1984. Archivado desde el original el 12 de octubre de 2012. Consultado el 28 de enero de 2015. 
  15. «AN/APG-73, Warfighter's Encyclopedia». Archivado desde el original el 5 de noviembre de 2004. 

Enlaces externos editar