JOVIAL — язык программирования высокого уровня , основанный на ALGOL 58 , специализированный для разработки встроенных систем (специализированных компьютерных систем, предназначенных для выполнения одной или нескольких специализированных функций, обычно встроенных как часть более крупного и полного устройства, включая механические части). Это был основной язык системного программирования в 1960-х и 1970-х годах. [2]
JOVIAL был разработан как новый язык программирования «высокого порядка» [3] : 1, начиная с 1959 года командой System Development Corporation (SDC) под руководством Жюля Шварца для создания программного обеспечения для электроники военных самолетов. [4]
Название JOVIAL является аббревиатурой собственной версии Жюля [5] международного алгебраического языка ; Международный алгоритмический язык (IAL) — название, первоначально предложенное для ALGOL 58 . [6] По мнению Шварца, изначально язык назывался OVIAL , но по разным причинам этому сопротивлялись. Затем был предложен JOVIAL , без всякого значения , придаваемого J. Несколько в шутку было предложено назвать язык в честь Шварца, поскольку он был председателем собрания , и это неофициальное название прижилось. [7]
В 1960-е годы JOVIAL был частью серии L-проектов армии США , в частности ITT 465L Стратегической системы управления воздушным командованием ( проект Стратегической автоматизированной системы управления и контроля (SACCS)) из-за отсутствия вычислительного программирования в реальном времени. доступные языки. Около 95 процентов проекта SACCS, которым управляет компания International Telephone & Telegraph (ITT) с программным обеспечением, написанным в основном SDC, было написано на JOVIAL. Проект программного обеспечения занял два года и менее 1400 лет программистов, что составляет менее половины того же времени, что и L-проект SAGE . [8]
В конце 1970-х и начале 1980-х годов ВВС США приняли на вооружение стандартизированный центральный процессор (ЦП) MIL-STD-1750A , и последующие программы JOVIAL были созданы для этого процессора. Несколько коммерческих поставщиков предоставили компиляторы и соответствующие инструменты программирования для создания JOVIAL для таких процессоров, как MIL-STD-1750A, включая Advanced Computer Techniques (ACT), TLD Systems , Proprietary Software Systems (PSS) и другие. [9] [10]
JOVIAL был стандартизирован в 1973 году с помощью MIL-STD-1589 и пересмотрен в 1984 году с помощью MIL-STD-1589C . Он до сих пор используется для обновления и обслуживания программного обеспечения на старых военных машинах и самолетах. Обычно используются три диалекта: J3, J3B-2 и J73.
С 2010 года [обновлять]JOVIAL больше не поддерживается и не распространяется Программным офисом USAF JOVIAL (JPO). Программное обеспечение, ранее распространявшееся JPO, по-прежнему доступно через коммерческие ресурсы Software Engineering Associates, Inc., 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 года [обновлять]. [2]
Большая часть программного обеспечения, реализованного в JOVIAL, критически важна , и его обслуживание становится все сложнее. В декабре 2014 года сообщалось, что программное обеспечение, полученное на основе кода JOVIAL, созданного в 1960-х годах, стало причиной серьезного сбоя в инфраструктуре управления воздушным движением Соединенного Королевства , и что агентству, которое его использует, NATS Holdings , пришлось обучать своих специалистов. ИТ-специалистов в JOVIAL, чтобы они могли поддерживать это программное обеспечение, замену которого планировалось осуществить не раньше 2016 года. [11]
Языки, на которые повлиял JOVIAL, включают CORAL , SYMPL , Space Programming Language (SPL) и в некоторой степени CMS-2 . [12] Интерактивное подразделение JOVIAL под названием TINT, похожее на JOSS , было разработано в 1960-х годах. [7]
JOVIAL включает функции, отсутствующие в стандартном ALGOL, такие как элементы (теперь называемые структурами ), массивы элементов, переменные состояния (теперь называемые перечислениями ) и встроенный язык ассемблера . [13]
Он также включал положения для «упакованных» данных в таблицах. Упаковка таблиц относится к распределению элементов внутри записи по словам хранения (битам в единице данных). Это было важно с учетом ограниченности памяти и памяти вычислительных систем эпохи ЮЖИАЛА.
Коммуникационный пул (COMPOOL) в Jovial аналогичен библиотекам заголовочных файлов для таких языков, как PL/I и C.
Известные системы, использующие встроенное программное обеспечение JOVIAL, включают:
Следующий пример взят из Руководства по компьютерному программированию для языка JOVIAL (J73). [3] : 12
PROC ПОЛУЧИТЬ (КОД: ЗНАЧЕНИЕ); НАЧИНАТЬ КОД ДЕТАЛЯ U; ЗНАЧЕНИЕ ПУНКТА F; ЗНАЧЕНИЕ = -99999.; FOR I:0 НА 1 WHILE I<1000; ЕСЛИ КОД = TABCODE(I); НАЧИНАТЬ ЗНАЧЕНИЕ = ЗНАЧЕНИЕ ТАБУКИ (I); ВЫХОД; КОНЕЦ КОНЕЦ
В этом примере определяется процедура с именем RETRIEVE
, которая принимает входной аргумент целого числа без знака CODE
и выходной аргумент с плавающей запятой VALUE
. Он ищет в массиве из 1000 элементов TABCODE
запись, соответствующую CODE
, а затем устанавливает переменную с плавающей запятой VALUE
в элемент массива, TABVALUE
имеющий тот же соответствующий индекс массива. Если соответствующий элемент не найден, VALUE
устанавливается значение −99999.0
.