CORAL , abreviatura de Computer On-line Real-time Applications Language, es un lenguaje de programación desarrollado originalmente en 1964 en el Royal Radar Establishment (RRE), Malvern, Worcestershire , en el Reino Unido. [2] La R originalmente significaba "radar", no "tiempo real". [3] Fue influenciado principalmente por JOVIAL y, por lo tanto , por ALGOL , pero no es un subconjunto de ninguno de ellos.
La versión más conocida, CORAL 66 , fue desarrollada posteriormente por IF Currie y M. Griffiths bajo los auspicios del Comité Interinstitucional para Aplicaciones Informáticas (IECCA). Su definición oficial, editada por Woodward , Wetherall y Gorman, se publicó por primera vez en 1970. [4]
En 1971, el Ministerio de Defensa seleccionó CORAL como lenguaje para futuras aplicaciones militares y, para respaldarlo, se introdujo un programa de estandarización para garantizar que los compiladores CORAL cumplieran con las especificaciones. Este proceso fue adoptado posteriormente por el Departamento de Defensa de los EE. UU. al definir Ada .
Coral 66 es un lenguaje de programación de propósito general basado en ALGOL 60 , con algunas características de Coral 64, JOVIAL y Fortran . Incluye tipos de registros estructurados (como en Pascal ) y admite el empaquetamiento de datos en un almacenamiento limitado (también como en Pascal). Al igual que Edinburgh IMP, permite el lenguaje ensamblador en línea (incrustado) y también ofrece una buena comprobación y diagnóstico en tiempo de ejecución . Está diseñado para aplicaciones de computación en tiempo real y sistemas integrados , y para su uso en computadoras con capacidad de procesamiento limitada, incluidas aquellas limitadas a aritmética de punto fijo y aquellas sin soporte para la asignación de almacenamiento dinámico.
El lenguaje era un estándar interservicios para la programación militar británica, [5] y también fue ampliamente adoptado para fines civiles en la industria británica de control y automatización. Se utilizó para escribir software para las computadoras Ferranti [6] y General Electric Company (GEC) desde 1971 en adelante. También existen implementaciones para las plataformas Interdata 8/32, PDP-11 , VAX y Alpha y los servidores HPE Integrity ; para Honeywell y para Computer Technology Limited (CTL, más tarde ITL) Modular-1 ; [7] y para SPARC con Solaris e Intel con Linux .
El 26 de marzo de 1976, la reina Isabel II envió el primer correo electrónico de un jefe de estado desde el Royal Signals and Radar Establishment a través de ARPANET. El mensaje decía: "Este mensaje a todos los usuarios de ARPANET anuncia la disponibilidad en ARPANET del compilador Coral 66 proporcionado por el ordenador GEC 4080 en el Royal Signals and Radar Establishment, Malvern, Inglaterra, ... Coral 66 es el lenguaje estándar de alto nivel en tiempo real adoptado por el Ministerio de Defensa ". [8] [9]
Como Coral estaba destinado a una variedad de trabajos en tiempo real, en lugar de procesamiento general de datos de oficina, no había un equivalente estandarizado a una biblioteca stdio . IECCA recomendó un paquete primitivo de entrada/salida (E/S) para acompañar a cualquier compilador (en un documento titulado Entrada/Salida de datos de caracteres en los programas de utilidad Coral 66 ). La mayoría de los implementadores evitaron esto produciendo interfaces Coral para las bibliotecas existentes de Fortran y, más tarde, de C.
La contribución más significativa de CORAL a la informática puede haber sido la aplicación de controles de calidad en compiladores comerciales . [7] Para que un compilador CORAL fuera aprobado por IECCA y, por lo tanto, se pudiera comercializar como un compilador CORAL 66, el compilador candidato tenía que compilar y ejecutar un conjunto estándar de 25 programas de prueba y 6 programas de referencia. El proceso era parte del proceso de aprobación de la Norma Británica (BS) 5905. Esta metodología fue observada y adaptada más tarde por el Departamento de Defensa de los Estados Unidos para la certificación de compiladores Ada .
Se ha recuperado el código fuente de un compilador Coral 66 (escrito en BCPL ) y se ha escaneado el documento de Definición Oficial de Coral 66 de Her Majesty's Stationery Office (HMSO); la oficina de patentes del Ministerio de Defensa ha emitido una licencia al proyecto Edinburgh Computer History para permitirles poner en línea tanto el código como la referencia del lenguaje para uso no comercial.
Una variante de Coral 66 llamada PO-CORAL fue desarrollada a fines de la década de 1970 y principios de la de 1980 por la Oficina General de Correos (GPO) británica, junto con GEC , STC y Plessey , para su uso en las computadoras de control de la central telefónica digital System X. Posteriormente, se le cambió el nombre a BT-CORAL cuando British Telecom se separó de la Oficina de Correos. Las características únicas de este lenguaje fueron el enfoque en la ejecución en tiempo real, el procesamiento de mensajes, los límites en la ejecución de declaraciones entre la espera de entrada y la prohibición de la recursión para eliminar la necesidad de una pila . [ cita requerida ]