Введение

Язык программирования JOVIAL — это язык программирования высокого уровня, основанный на ALGOL 58 и специализирующийся на разработке встроенных систем (специализированных компьютерных систем, предназначенных для выполнения одной или нескольких выделенных функций, обычно встроенных в состав более крупного, комплексного устройства, включая механические компоненты). Он являлся основным языком системного программирования в 1960-х и 1970-х годах. Разработка этого языка программирования началась в 1959 году командой из корпорации System Development Corporation (SDC) под руководством Жюля Шварца для создания программного обеспечения для авионики военных самолетов. Название JOVIAL является акронимом от Jules' Own Version of the International Algebraic Language; Международный алгоритмический язык (IAL) первоначально предлагался в качестве названия для ALGOL 58. По словам Шварца, изначально язык назывался OVIAL, но это предложение было отклонено по различным причинам. Затем было предложено название JOVIAL, буква «J» не имела какого-либо специального значения. В шутку было предложено назвать язык в честь Шварца, поскольку он был председателем собраний, и это неофициальное название прижилось. В 1960-х годах JOVIAL использовался в рамках серии проектов L Вооруженных сил США, в частности, в системе управления Стратегическим командованием ВВС ITT 465L (проект Strategic Automated Command and Control System (SACCS)), из-за отсутствия доступных языков программирования для вычислений в реальном времени. Около 95% проекта SACCS, управляемого компанией International Telephone & Telegraph (ITT) при активном участии SDC в разработке программного обеспечения, было написано на JOVIAL. Реализация программного обеспечения заняла два года и потребовала менее 1400 человеко-лет, что составляет менее половины времени, затраченного на эквивалентный проект SAGE L. В конце 1970-х и начале 1980-х годов ВВС США приняли стандартизированный центральный процессор (ЦП) MIL STD 1750A, и последующие программы на JOVIAL создавались для этого процессора. Несколько коммерческих поставщиков предоставляли компиляторы и сопутствующие инструменты программирования для разработки JOVIAL для процессоров, таких как MIL STD 1750A, включая Advanced Computer Techniques (ACT), TLD Systems, Proprietary Software Systems (PSS) и другие. JOVIAL был стандартизирован в 1973 году стандартом MIL STD 1589 и пересмотрен в 1984 году стандартом MIL STD 1589C. Он до сих пор используется для обновления и обслуживания программного обеспечения устаревшей военной техники и авиации. Существует три распространенных диалекта: J3, J3B 2 и J73. По состоянию на 2010 год поддержка и распространение JOVIAL со стороны Управления программ JOVIAL ВВС США (JPO) прекращены. Программное обеспечение, ранее распространявшееся JPO, по-прежнему доступно через коммерческие источники в компании Software Engineering Associates, Inc. (SEA), а также существуют другие комбинации хост/целевых процессоров, включая Windows, Linux, Mac OS X на PowerPC, SPARC, VAX, 1750A, PowerPC, TI 9989, Zilog Z800x, Motorola 680x0 и IBM System 360, System 370 и System z. Кроме того, DDC I, приобретшая часть Advanced Computer Techniques, также предлагает компиляторы JOVIAL и сопутствующие инструменты по состоянию на 2020 год. Большинство программных продуктов, реализованных на JOVIAL, критически важны для функционирования систем, и их обслуживание становится все более сложным. В декабре 2014 года сообщалось, что программное обеспечение, разработанное на основе кода JOVIAL, созданного в 1960-х годах, стало причиной серьезного сбоя в инфраструктуре управления воздушным движением Великобритании, и компания NATS Holdings, использующая это программное обеспечение, была вынуждена обучать свой ИТ-персонал JOVIAL для его обслуживания, поскольку замена программного обеспечения была запланирована только на 2016 год.

Влияние

Языки, испытавшие влияние JOVIAL, включают CORAL, SYMPL, язык космического программирования (SPL) и, в некоторой степени, CMS 2. В 1960-х годах был разработан интерактивный поднабор JOVIAL под названием TINT, аналогичный JOSS. Он также предусматривал возможность использования "упакованных" данных в таблицах. Упаковка таблиц относится к размещению элементов внутри записи в слова памяти (биты в единице данных). Это было особенно важно из-за ограниченного объема памяти и хранилищ вычислительных систем эпохи JOVIAL. Коммуникационный пул (COMPOOL) в JOVIAL аналогичен библиотекам заголовочных файлов для языков, таких как PL/I и C.