CORAL , сокращение от Computer Online Real-time Applications Language — это язык программирования, первоначально разработанный в 1964 году в Королевском радарном учреждении (RRE), Малверн, Вустершир , в Великобритании. [2] Первоначально буква R обозначала «радар», а не «режим реального времени». [3] На него повлиял в первую очередь JOVIAL и, следовательно , ALGOL , но он не является подмножеством ни того, ни другого.
Наиболее широко известная версия, CORAL 66 , была впоследствии разработана И. Ф. Карри и М. Гриффитсом под эгидой Межучрежденческого комитета по компьютерным приложениям (IECCA). Его официальное определение, под редакцией Вудворда , Уэтералла и Гормана, было впервые опубликовано в 1970 году. [4]
В 1971 году Министерство обороны выбрало CORAL в качестве языка для будущих военных приложений, и в поддержку этого была введена программа стандартизации, гарантирующая соответствие компиляторов CORAL спецификациям. Этот процесс позже был принят Министерством обороны США при определении Ada .
Coral 66 — язык программирования общего назначения, основанный на ALGOL 60 , с некоторыми функциями Coral 64, JOVIAL и Fortran . Он включает в себя структурированные типы записей (как в Pascal ) и поддерживает упаковку данных в ограниченное хранилище (также как в Pascal). Как и Edinburgh IMP , он поддерживает встроенный язык ассемблера , а также обеспечивает хорошую проверку и диагностику во время выполнения . Он предназначен для вычислений в реальном времени и встроенных системных приложений, а также для использования на компьютерах с ограниченной вычислительной мощностью, включая компьютеры, ограниченные арифметикой с фиксированной запятой и не поддерживающие динамическое распределение памяти.
Этот язык был межведомственным стандартом для британского военного программирования [5] , а также получил широкое распространение для гражданских целей в британской индустрии управления и автоматизации. Начиная с 1971 года, он использовался для написания программного обеспечения для компьютеров Ferranti [6] и General Electric Company (GEC). Также существуют реализации для платформ Interdata 8/32, PDP-11 , VAX и Alpha и серверов HPE Integrity ; для Honeywell и для Computer Technology Limited (CTL, позже ITL) Modular-1 ; [7] и для SPARC под управлением Solaris и Intel под управлением Linux .
Королева Елизавета II отправила первое электронное письмо от главы государства из Королевского института сигналов и радиолокации через ARPANET 26 марта 1976 года. Сообщение гласило: «Это сообщение всем пользователям ARPANET объявляет о доступности в ARPANET компилятора Coral 66, предоставленного компьютер GEC 4080 в Королевском институте сигналов и радиолокации, Малверн, Англия, ... Coral 66 - это стандартный язык высокого уровня реального времени, принятый Министерством обороны ». [8] [9]
Поскольку Coral был нацелен на разнообразную работу в реальном времени, а не на общую обработку офисных данных, не существовало стандартизированного эквивалента библиотеки stdio . IECCA рекомендовала примитивный пакет ввода/вывода (I/O) для сопровождения любого компилятора (в документе под названием « Ввод/вывод символьных данных в служебных программах Coral 66» ). Большинство разработчиков избежали этого, создав интерфейсы Coral для существующих библиотек Fortran, а затем и C.
Самым значительным вкладом CORAL в компьютерную науку, возможно, было обеспечение контроля качества коммерческих компиляторов . [7] Чтобы компилятор CORAL был одобрен IECCA и, таким образом, позволил компилятору продаваться как компилятор CORAL 66, компилятор-кандидат должен был скомпилировать и выполнить стандартный набор из 25 тестовых программ и 6 тестовых программ. Этот процесс был частью процесса утверждения британского стандарта (BS) 5905. Эта методология была позже использована и адаптирована Министерством обороны США для сертификации компиляторов Ada .
Исходный код компилятора Coral 66 (написанный на BCPL ) был восстановлен, а документ «Официальное определение Coral 66», выпущенный Канцелярским бюро Ее Величества (HMSO), был отсканирован; Патентное ведомство Министерства обороны выдало Эдинбургскому проекту компьютерной истории лицензию, позволяющую размещать в Интернете как код, так и языковой справочник для некоммерческого использования.
Вариант Coral 66 под названием PO-CORAL был разработан в конце 1970-х — начале 1980-х годов Главным почтовым отделением Великобритании (GPO) совместно с GEC , STC и Plessey для использования на компьютерах управления цифровой телефонной станцией System X. Позже он был переименован в BT-CORAL, когда British Telecom была выделена из почтового отделения. Уникальными особенностями этого языка были ориентация на выполнение в реальном времени, обработка сообщений, ограничения на выполнение операторов между ожиданием ввода и запрет на рекурсию для устранения необходимости в стеке . [ нужна цитата ]