CORAL (Computing Online Realtime Algorithmic Language) fue desarrollado en 1966 en el Royal Radar Establishment (RRE), Malvern, UK por I. F. Currie and M. Griffiths.
CORAL 66 es un lenguaje de programación basado en Algol 60, con algunas características de CORAL 64, JOVIAL, y FORTRAN. Como Edinburgh IMP, esto permite un ensamblador integrado, y también ofreció un buen tiempo de comprobación y diagnósticos. El lenguaje usa palabras clave reservadas identificadas por comillas simples, como 'BEGIN'. Mientras la sintaxis recuerda ligeramente a Pascal, en algunos aspectos se parece más a FORTRAN que a Algol, en el cual los procedimientos recurrentes no son apoyados.
Ideado para usos en tiempo real, el lenguaje era un estándar de inter-servicio para la programación militar Británica, y también fue adoptada extensamente para propósitos civiles en el control Británico y en la industria de la automatización. Fue usado para escribir el software tanto para Ferranti como para ordenadores GEC a partir de 1971 en adelante. Las implementaciones también existen para Interdata 8/32, PDP-11, VAX y los procesadores Alpha; Para Honeywell, y para Computer Technology Limited (CTL) Modular-1; así como para SPARC corriendo Solaris e Intel corriendo Linux.
El código fuente para un compilador de CORAL 66 (escrito en BCPL) ha sido recuperado y el documento "Definición Oficial de CORAL 66" por HMSO ha sido escaneado. La oficina de patentes del Ministerio de Defensa ha publicado una licencia al proyecto de Edinburgh Computer History para permitirles poner en línea tanto el código, como el lenguaje de referencia para uso no comercial. Ambos documentos estarán en línea dentro de unos días.
Una variante de CORAL66 fue desarrollada durante finales de los años 1970 y principios de los 1980 por la GPO Británica, en unión con GEC, STC y Plessey, para el empleo sobre System X de ordenadores de control de divisas digitales telefónicos, conocido como PO-CORAL. Más tarde fue renombrado a BT-CORAL cuando British Telecom fue derivada desde Correos. Las únicas características de éste lenguaje eran el foco sobre la ejecución en tiempo real, el procesamiento de mensajes, límites sobre la ejecución de declaración entre espera de entrada, y una prohibición contra la repetición para quitar la necesidad de una pila.