CORAL , сокращение от Computer On-line Real-time Applications Language — язык программирования, изначально разработанный в 1964 году в Королевском радиолокационном институте (RRE), Малверн, Вустершир , в Соединенном Королевстве. [2] Первоначально буква R означала «радар», а не «реальное время». [3] На него в первую очередь повлиял JOVIAL и, следовательно, ALGOL , но он не является подмножеством ни того, ни другого.
Наиболее широко известная версия, CORAL 66 , была впоследствии разработана IF Currie и M. Griffiths под эгидой Inter-Establishment Committee for Computer Applications (IECCA). Ее официальное определение, отредактированное Woodward , Wetherall и Gorman, было впервые опубликовано в 1970 году. [4]
В 1971 году CORAL был выбран Министерством обороны в качестве языка для будущих военных приложений, и для поддержки этого была введена программа стандартизации, чтобы гарантировать, что компиляторы CORAL соответствуют спецификациям. Этот процесс был позже принят Министерством обороны США при определении Ada .
Coral 66 — это язык программирования общего назначения , основанный на ALGOL 60 , с некоторыми функциями из Coral 64, JOVIAL и Fortran . Он включает структурированные типы записей (как в Pascal ) и поддерживает упаковку данных в ограниченное хранилище (также как в Pascal). Как и Edinburgh IMP, он допускает встроенный (встроенный) язык ассемблера , а также предлагает хорошую проверку и диагностику во время выполнения . Он предназначен для вычислений в реальном времени и встроенных системных приложений, а также для использования на компьютерах с ограниченной вычислительной мощностью, включая те, которые ограничены арифметикой с фиксированной точкой и те, которые не поддерживают динамическое распределение памяти.
Язык был межведомственным стандартом для британского военного программирования [5] , а также широко применялся для гражданских целей в британской индустрии управления и автоматизации. Он использовался для написания программного обеспечения для компьютеров Ferranti [6] и General Electric Company (GEC) с 1971 года. Существуют также реализации для платформ 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 отделилась от почтового отделения. Уникальными особенностями этого языка были фокусировка на выполнении в реальном времени, обработка сообщений, ограничения на выполнение операторов между ожиданием ввода и запрет на рекурсию для устранения необходимости в стеке . [ требуется цитата ]