В какой отрасли в основном использовался язык jovial
Перейти к содержимому

В какой отрасли в основном использовался язык jovial

JOVIAL

JOVIAL — язык программирования высокого уровня, аналогичный ALGOL, специализирующийся на разработке встраиваемых систем (специализированных компьютерных систем, предназначенных для выполнения одной или нескольких выделенных функций, обычно встраиваемых как часть более крупного, более полного устройства, включая механические части). Это был основной язык системного программирования в 1960-70-х годах.

История

JOVIAL разрабатывался как новый язык программирования "высокого порядка" начиная с 1959 года командой в корпорации System Development Corporation (SDC) во главе с Жюлем Арцем для составления программного обеспечения для электроники военных самолётов.

Название JOVIAL является акронимом от Собственного Варианта Международного Алраического Языка Жюля, Международный Алгоритмический Язык (IAL) — название, первоначально предложенное для ALGOL 58. По словам Арца, первоначально язык назывался OVIAL, но этому противостояли по разным причинам. Затем было предложено JOVIAL, без какого-либо значения, прилагаемого к J. Somewhat в шутку было предложено, чтобы язык был назван в честь Арца, так как он был председателем собрания, и это неофициальное название stuck.

В течение 1960-х годов JOVIAL был частью серии военных L-проектов США, в частности, стратегической системы управления воздушным транспортом ITT 465L (проект Стратегической автоматизированной системы управления и управления (SACCS)), из-за отсутствия доступных языков программирования в реальном времени. Около 95% проекта SACCS, управляемого International Telephone & Teloph (ITT) с программным обеспечением, главным образом написанным SDC, было написано в JOVIAL. Проект программного обеспечения занял два года и более 1400 лет программиста, что меньше половины эквивалентного времени в проекте L.

В конце 1970-х — начале 1980-х годов ВВС США приняли на вооружение стандартизированный центральный процессор (ЦПУ), MIL-STD-1750A и последующие программы JOVIAL были построены для этого процессора. Несколько коммерческих вендоров предоставили компиляторы и соответствующие инструменты программирования для создания JOVIAL для таких процессоров, как MIL-STD-1750A, включая передовые компьютерные техники (ACT), TLD Systems, запатентованные программные системы (PSS) и другие.

JOVIAL был стандартизирован в 1973 году с помощью MIL-STD-1589 и пересмотрен в 1984 году с помощью MIL-STD-1589C. Он по-прежнему широко используется для обновления и обслуживания программного обеспечения на старых военных машинах и самолетах. В общем употреблении три диалекта: J3, J3B-2 и J73.

, JOVIAL больше не поддерживается и не распространяется Управлением программ (JPO) USAF JOVIAL. Программное обеспечение, ранее распространяемое JPO, по-прежнему доступно через коммерческие ресурсы в Software Engineering Associates, Inc., (SEA), как и другие комбинации серверных/целевых процессоров, включая Windows, Linux, Mac OS X на PowerPC, C, VAX, 1750A, PowerPC, TI-9989, Z, Z0, Zи Z800X, система, 370, Mot, Mot, MOTИ orA

Большинство программного обеспечения, реализованного в JOVIAL, является критически важным, и обслуживание становится все сложнее. В декабре 2014 года было сообщено, что программное обеспечение, из кода JOVIAL, произведенного в 1960-х годах, было связано с серьезным сбоем в инфраструктуре управления воздушным движением Соединенного Королевства, и что агентство, которое его использует, NATS Holdings, должно было обучить свой ИТ-персонал в JOVIAL, чтобы они могли поддерживать это программное обеспечение, которое не было запланировано на замену до 2016 года.

Влияние

Языки, на которые оказывает влияние JOVIAL, включают CORAL, SYMPL, Space Programming Language (SPL) и в некоторой степени CMS-2. Интерактивное подмножество JOVIAL под названием TINT, похожее на JENO, было разработано в 1960-х годах.

Особенности

JOVIAL включает в себя функции, не найденные в стандартном ALGOL, такие как записи, arrais записей и встроенный язык сборки.

Приложения

Известные системы, использующие встроенное программное обеспечение JOVIAL, включают в себя:

  • Спутник связи Milstar
  • Бомбардировщики B-52, B-1B, B-2C-130, C-141, C-17 , F-15, F-16 (до блока 50), истребители F-117
  • Самолет У-2AWACS (до блока 40/45)
  • Крейсера ВМС Aegis
  • Армейская система многоцелевого запуска (MLRS)
  • Армейские геликоптеры Sikorsky UH-60 Black Hawk , F117, F119 реактивные двигатели
  • Система ПВО и управления NORAD (система H es HME-5118ME)
  • Наземная система противовоздушной обороны НАТО (НАДГЕ)
  • Роторные двигатели RL10
  • Гражданская NAS (Национальная система управления воздушным движением)
  • Бортовые радарные системы APG-70, APG-71 и APG-73

Пример

Следующий пример взят из Руководства по компьютерному программированию для языка JOVIAL (J73). < syntaxhighlight = "text" > PROC RETRIEVE (CODE: VALUE); BEGIN ITEM CODE U; ITEM VALUE F; VALUE = -999999.; FOR I: 0 BY 1 WHWHWHWHAI I I I I _ I < 1000; I_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Он ищет 1000-элементный array для записи, которая соответствует, а затем устанавливает переменную плавающей точки для элемента array, имеющего тот же самый соответствующий индекс array. Если совпадающий элемент не найден, устанавливается значение.

10 самых влиятельных мертвых языков программирования

10 самых влиятельных мертвых языков программирования главное изображение

Эта статья — о мертвых или почти мертвых языках, которые оставили важный след в истории программирования. Это не исчерпывающий список, но он помогает понять, как современные языки программирования связаны со своими прародителями.

Примечание: Это адаптированный перевод статьи 10 (MOSTLY DEAD) INFLUENTIAL PROGRAMMING LANGUAGES Гилеля Уэйна, инженера и консультанта. Повествование ведётся от лица автора оригинала.

Недавно я прочитал спорную статью «20 самых важных языков программирования в истории». Ее автор называл GO более значимым, чем ALGOL, Smalltalk или ML, но даже не упомянул Pascal, поскольку счел его «почти мертвым». Да, Pascal почти мертв, но такой подход явно противоречит понятию «наиболее значимый» с точки зрения истории.

На всякий случай предупреждаю — вероятно, в статье допущены миллиарды ошибок — но если вы делаете обзор 60-летней истории вычислительной техники, допустить ошибку не так уж сложно.

Методология

Если мы знаем, что некий язык А первым ввел функцию В, это еще не означает, что А повлиял на В. Например, Absys, возможно, был первым логическим языком программирования, но основной логического программирования считается Prolog, разработанный независимо от него.

Есть только один достоверный способ узнать о связи между языками или их функциями — цитирование.

  • Б цитирует А в своем справочном руководстве
  • Б цитирует статью, в которой цитируется А
  • Автор Б говорит, что «на нас повлиял А»

Иногда в руководстве по языку А упоминается статья о языке Б, в которой говорится, что Б заимствовал идеи из В. В этом случае мы понимаем, что В повлиял на А. Тут работает золотое правило научных исследований — чем больше источников, тем лучше. А чтобы понять, с чего начать, я использовал эвристику.

Один из эффективных методов эвристики — поиск по родственным языкам программирования. Крайне редко бывает так, что разные языки вне зависимости друг от друга создают одинаковый синтаксис. Например, не обязательно читать историю дизайнерских решений Юкихиро Мацумото, чтобы понять, что на Ruby повлиял Smalltalk — оба языка фильтруют список с помощью метода select. Это не исчерпывающее доказательство — существует вероятность, что Мацумото придумал этот синтаксический элемент самостоятельно. Но, возможно, и Ruby, и Smalltalk находились под влиянием общего предка. Это отправная точка, с нее можно начать поиск.

О методологии на этом все, пора переходить к сути.

Читайте также: Как устроен функциональный диалект Лиспа Clojure и почему использующие его программисты восхищаются им

Cobol

Разработчик: Codasyl, 1960.

Cobol возник благодаря тому, что научные и бизнес подразделения IBM использовали разные языки программирования. 70 лет назад высокоуровневые языки предназначались либо для инженерных вычислений, либо для управления данными. Если в научной среде стандартом был Fortran, среди бизнеса единства не было — компании использовали Comtran, Flow-Matic и другие.

В 1960 году Министерство обороны США организовало комитет по разработке единого универсального языка программирования для бизнес-задач — им стал Cobol.

Cobol был одним из четырех «материнских» языков, наряду с Algol, Fortran и LISP. Сегодня он почти забыт, но когда-то был самым популярным языком в мире и на нем по-прежнему работают многие устаревшие бизнес-системы.

Вклад: С точки зрения синтаксиса и семантики вклад Cobol в современные языки незначителен. Куда важнее его влияние на концепцию записи данных. В Fortran и Algol единственной структурой данных был статический массив. Cobol может читать структурированные файлы с иерархическими данными — он автоматически деструктурирует их в репрезентативные переменные. Это подход, который предшествовал современным способам записи данных.

Причина смерти: Здесь есть два фактора. Первый: Cobol не пересекается с другими PLT — и его синтаксис практически не пересекается с другими языками. Поэтому языки второго или третьего поколения, созданные на базе своих предков, почти не содержат в своем ДНК Cobol. Причина этого не столько во внутренних проблемах языка, сколько в пренебрежительном отношении к нему в академической среде. Codasyl создавала язык для решения конкретных бизнес-задач — поэтому научные круги почти не обращали на него внимание.

Второй фактор: Cobol был чрезвычайно сложным даже по меркам современных языков программирования. Это означает, что компиляторы Cobol требовали большей вычислительной мощности, чем могли предоставить ему микрокомпьютеры и миникомпьютеры.

Algol

Разработчик: Комитет Algol, 1960.

Примечание: Algol-58 выпущен двумя годами ранее, но от него быстро отказались. По этой причине я объединяю два этих языка. Разработчики Algol хотели создать хороший язык для исследования алгоритмов. Поэтому язык, по сути, был формализованным «псевдокодом».

Из четырех материнских языков Algol — самый «мертвый». LISP и Cobol до сих пор на слуху, поскольку на них работает множество устаревших систем, а Fortran иногда используется в научных целях. Но я встречал множество программистов, которые ни разу не слышали об Algol — при этом по степени влияния на современные языки с ним может сравнится разве что LISP.

Вклад: Вот несколько примеров: лексическая область видимости, структурное программирование, вложенные функции, языковые спецификации, семантика вызова по имени, грамматики БНФ, блочные комментарии. Следы Algol видны в каждом современном языке программирования.

Причина смерти: Algol разработан для изучения алгоритмов, а не для коммерческого применения. В спецификации не было определено никаких операций ввода-вывода, что делало невозможным его использование для решения практических задач. Конечно, вы могли бы написать расширение компилятора, но тогда стоило бы добавить и другие вещи. Именно это сделал группа из 70 разработчиков — в 1960 году они добавили в Algol возможности ввода-вывода и дополнительные структуры данных. Среди них, например, Jovial, Simula, CLU и CPL.

Именно эти расширения, а не оригинальный Algol, легли в основу более поздних языков программирования. Сейчас мы называем С «подобным Algol»-языком, но правильнее было бы говорить, что он похож на BCPL, который похож на CPL, а уже тот похож на Algol. Такими образом, язык похоронили собственные обновления.

Энтузиасты предпринимали попытки сделать Algol практичнее — в 1968 году группа разработчиков представила Algol-68, который радикально отличался от оригинала, но не имел того же влияния на IT. Стоит отметить, что принципы Algol получили продолжение в Pascal Никлауса Вирта.

Разработчик: Кен Айверсон, 1962.

В оригинале APL — написанная от руки нотация для математических массивов, которую IBM взяла за основу для создания языка программирования. Язык использовался для обработки массивов — и позволял сравнительно короткими командами манипулировать большими блоками чисел.

Если вы раньше слышали об APL, то скорее всего знаете его как «этот странный язык символов». Один из самых известных фрагментов кода на нем — реализация игры «Жизнь»:

APL использует собственные символы, поэтому для него нужна специальная клавиатура. Выглядела она вот так:

Несмотря на это, язык стал популярным на мейнфреймах благодаря очень низким требованиям к памяти.

Вклад: Основная заслуга языка — инструменты для обработки массива. Раньше при добавлении двух списков разработчики использовали цикл или массив, APL позволил работать на весь массив сразу. Например, так:

В научных кругах появление языка стало большим событием. В прикладной математике большинство задач сводится к крупномасштабным операциям с большими матрицами. Когда появился инструмент для их быстрой обработки, математики смогли работать эффективнее.

APL лег в основу R, Numpy, Pandas, Matlab и других языков и библиотек для программирования. У него есть и прямые потомки — J, Dyalog, K, Q, — которые оказались менее успешными, хотя до сих пор используются в финансовом секторе.

Причина смерти: Очевидная проблема – клавиатура с символами, которые не используются больше нигде, кроме APL. Кеннет Айверсон исправил этот недостаток с помощью J, который использует диграфы вместо APL-символов: вместо

: в нем можно писать ≠. Сделано это было только в 1990 году — слишком поздно для популяризации радикально другого стиля программирования.

Существует и более тонкая проблема — APL и J умеют работать только с однородными данными. Языки не позволяют хранить строки и числа в одной и той же структуре данных.

Дополнительная литература: Notation as a Tool of Thought.

Basic

Разработчик: Джон Кемени, 1964.

Basic — первый демократичный язык программирования. Он был создан как упрощенный аналог Fortran и предназначался для людей, которые не имели отношения к науке, но хотели научиться программировать.

Язык стал популярным в эпоху микрокомпьютеров — у первых устройств было слишком мало памяти для компиляции «настоящих» языков программирования. В то же время урезанному компилятору Basic требовалось всего 2 КБ. Basic стал лингва франка для начинающих программистов: если в 1970-х вы программировали дома, то, вероятно, писали именно на этом языке.

Вклад: Язык оказал сильное техническое влияние на интерпретацию вычислений — Basic был первым языком программирования с возможностью вычисления в реальном времени (Dartmouth Time Sharing System), опередив APL на год. Если APL был доступен только клиентам IBM, а Basic был доступен всем.

Кроме того, он имел большое социальное влияние: Basic сделал программирование доступным для неспециалистов — как для взрослых, так и для детей. Многие влиятельные программисты 80-х и 90-х годов учились программировать на Basic. Многие корпоративные программы были написаны на Basic — вероятно, его популярность ускорила упадок Cobol.

Также на Basic написаны инструменты, которые входят в пакет Office. Со временем Microsoft превратила Basic в Visual Basic — на нем же написаны OpenOffice и LibreOffice. Недавно он уступил место JavaScript и теперь его используют для создания макросов.

Причина смерти: Большинство людей, которые учились писать код на BASIC, считали его «второстепенным» языком. Его можно использовать, если вы учитесь в школе или вам нужно написать простую программу для малого бизнеса — но настоящие программисты использовали «настоящие» языки. Как только компьютеры с оперативной памятью более 16 КБ стали доступны на массовом рынке, Basic начал терять популярность, а Pascal и C – приобретать.

Какое-то время Basic продолжал существовать как популярный язык программирования для детей и подростков, но похоже, умер и в этой нише.

Разработчики: IBM, 1966.

IBM работала с двумя языками программирования: для научных исследований в компании использовался Fortran, а для бизнес-приложений — Comtran. В ответ на конкуренцию со стороны Cobol, IBM попыталась создать собственный унифицированный язык, которым могли пользоваться и научные-, и бизнес-подразделения. В результате получилась некая смесь двух языков с большим количеством дополнительных функций.

Вклад: Авторы Algol-68 насмешливо назвали PL/I устаревшим языком. Но все возможности Algol-68 появились в PL/I раньше и работали лучше. В то время как Cobol первым научился читать структурированные данные, PL/I был первым языком, который реализовал их как тип.

В Cobol чтение имени пользователя даст вам две глобальные переменные — user и name. В PL/I вы получите одну переменную с полем user.name. PL/I был также первым высокоуровневым языком с указателями для прямого управления памятью, константами и перегрузкой функций.

Многие из идей, впервые использованные в этом языке, вошли в массовое программирование через С, который представлял собой смесь BCPL и PL/I. Например, С в точности копирует синтаксис комментариев PL/I.

Причина смерти: Все программисты, писавшие на Fortran, думали, что PL/I слишком похож на Cobol. Писавшие на Cobol считали, что он почти идентичен с Fortran. IBM пыталась заменить два устоявшихся языка гораздо более сложным. Другая проблема в том, что компания эксклюзивно выпускала компилятор для PL/I — и многим программистам не понравилось, что язык так сильно зависит от корпорации.

К тому времени, когда IBM смогла решить обе этих проблемы, мир уже перешел в эру микрокомпьютеров, где PL/I уступил BASIC.

Дополнительная литература: The Choice of PL/I

Simula 67

Разработчики: Оле Даль и Кристен Найгаард, 1967.

Simula 67 — расширенная версия Algol для математического моделирования. Первая версия языка (Simula I) имела специальный синтаксис моделирования — разработчикам показалось, что он получился слишком специализированным, а в симуляциях содержалось слишком много дублирований кода. Даль и Найгаард хотели создать более универсальный язык, возможности которого выходили бы за пределы моделирования.

Их идея заключалась в том, чтобы дать пользователям возможность определять новые типы объектов — классы — с разрешением полиморфного определения функций. После этого пользователи могли создать функции моделирования как частные случаи объектно-ориентированной системы.

Вклад: Хотя Simula 67 не был первым объектно-ориентированным языком программирования, он впервые использовал правильные объекты и заложил фундамент для языков-последователей этой методологии. Речь идет о разделении класса/объекта, создании подклассов, виртуальных методах и защищенных атрибутах.

Язык вдохновил подавляющее большинство академических исследований объектов в программировании, которые проводились после 1967 года. Создатели CLU и ML писали, что они вдохновлялись идеями Simula. Бьярн Страуструп защитил докторскую диссертацию по Simula и включил несколько идей из него в C ++.

Причина смерти: В своей докторской диссертации Страуструп утверждал, что Simula — слишком медленный язык для массового использования. «Желаю удачи в выполнении операции, если вы не на мейнфрейме», — комментировал он. Стоит отметить, что Smalltalk-80, который развивал те же идеи, и имел преимущество в 13 дополнительных лет закона Мура — и даже он считался слишком медленным. В Simula реализованы идеи, которые затем были интегрированы в быстрые и простые языки.

Pascal

Разработчик: Никлаус Вирт, 1970

Язык был создан на основе Algol-60, идеи которого, по мнению Вирта, не нашли отражения в Algol-68. Сначала Pascal стал популярен как «язык введения в Computer Science», но к 1980 году стал вторым по популярности в компьютерной сети Usenet. Вирт рассматривал все семейство языков — Pascal, Modula и Oberon — как единый языковой концепт.

Учитесь: На Хекслете есть треки — продвинутые курсы для программистов с опытом, которые позволят прокачать определенные темы

Вклад: Pascal не привнес в программирование ни одной новой идеи — это был намеренно консервативный язык, целью которого было собрать лучшие идеи языков-предшественников в одном месте. Язык вывел синтаксис Algol настолько далеко за пределы академического круга, что символ :=, который изначально был характерен для Algol, стал считаться «стилем Pascal».

Хотя Pascal не был новаторским языком, Вирт впервые реализовал именно в нем принцип пошаговой детализации (stepwise refinement) в качестве средства для написания надежного программного обеспечения. Это привело к созданию Modulas, который популяризировал модули первого класса, а также Euclid — первого формального языка программирования для написания проверяемых программ.

Причина смерти: В отличие от других языков из этого списка, у Pascal не было серьезных структурных барьеров или сильных конкурентов. Он конкурировал с C, но долгое время оставался таким же популярным. Диалект Pascal, Delphi, до сих пор занимает довольно высокие позиции в индексах TIOBE и PYPA.

Дополнительная литература: Pascal and its Successors

Разработчик: Барбара Лисков, 1975

Лисков и ее группа хотели реализовать концепцию абстрактных типов данных — так появился CLU.

Вклад: CLU, вероятно, самый влиятельный язык, о котором почти никто не слышал. В CLU были итераторы, абстрактные типы данных, обобщенное программирование, проверяемые исключения и многое другое.

Сейчас терминология CLU почти не используется в других языках, поэтому не на 100% очевидно, что большинство из них происходят от него. Однако языковая спецификация каждого следующего десятилетия называлась core CLU — язык сделал многое для развития программирования.

Причина смерти: CLU создавался как демонстрационный язык: Лисков хотела, чтобы в сообществе оценили идеи, а не конкретный язык. Это и произошло: сегодня почти каждый язык чем-то обязан CLU.

После завершения работы над CLU Лисков с группой программистов создала его расширение — Argus, которое должно было продемонстрировать ее идеи по параллелизму. Он оказался менее влиятельным, но идеи Argus можно найти в некоторых современных языках.

Дополнительная литература: A History of CLU

Разработчик: Робин Миллер, 1976.

Прежде чем создать ML, Милнер работал над LCF Prover — одним из первых помощников для доказательства теорем. LCF искал ошибки в доказательстве и проверял, правильно ли оно оформлено. Программист создал для него метаязык, основанный на надежных математических формализмах — строгих статических типах и функциях высшего порядка. Этот язык позже превратился в ML и был стандартизирован как SML.

Вклад: ML — один из самых старых «языков алгебраического программирования». Часто ему приписывают алгебраические типы данных, модули и типизированное функциональное программирование. Однако эти функций появилось не в ML — первая версия языка создавалась только для работы с LCF и не предназначалась для широкого использования. По мере развития ML программисты привносили в него идеи из других исследовательских языков.

В ML была реализована одна очень важная идея: вывод типов. Это первый язык со статической типизацией, в котором не нужно определять типы — компилятор делал это автоматически. Эта идея заложила основу для типизированного функционального программирования.

ML оказал большое влияние на современные средства доказательства теорем: «программные» языки для Isabelle, CVC3 и Coq основаны на ML. Кроме того, на языке было создано множество теорий типов, хотя позже Haskell приобрел большую популярность среди математиков.

Причина смерти: У ML было много интересных функций, но он был языком специального назначения для доказательства теорем. SML вышел в том же году, что и Haskell, который оказался более «чистым» примером языка типизированного функционального программирования.

Smalltalk

Разработчики: Алан Кей, 1972, 1976 и 1980 годы.

История Smalltalk выглядит как движение к цели: в Smalltalk-72 были заложены основы языка, в Smalltalk-76 реализовал концепцию объектно-ориентированного программирования, а Smalltalk-80 сделал ее популярной по всему миру.

В Smalltalk не было объектов в представлении того времени, но он был первым объектно-ориентированным языком. Разница в том, что в Simula были объекты в добавление к примитивам — числам и логическим значениям. В Smalltalk логические значения тоже были объектами.

Вклад: Многие думают, что Smalltalk — это настоящее объектно-ориентированное программирование, а Java и Python — нет. Но это не так: объектно-ориентированное программирование, как и любая другая парадигма, представляет собой огромную концепцию с множеством разных языков, которые в разной степени повлияли на нее. Однако именно Smalltalk был языком, который популяризировал эту концепцию.

Если открыть любую книгу по общей теории объектно-ориентированного программирования 80-х или начала 90-х годов, она будет построена на Smalltalk. В некоторых примеры будут описаны на C++ или других языках, но базой в этих книгах все равно остается Smalltalk.

Язык также популяризовал идею об объектах как об общих данных, заложив основу для высокоуровневого языка Cobra и модели акторов.

Причина смерти: Существует распространенное мнение, что Smalltalk проиграл, потому что его предпочли C++. Однако это неверно: у Smalltalk действительно были проблемы (сложность взаимодействия с другими инструментами и низкая производительность), но даже в 90-х годах многие программисты полагали, что он станет доминирующим языком программирования для решения бизнес-задач.

Но потом появилась Java.

Smalltalk был не единственной жертвой «Явапокалипсиса»: конкуренцию Java проиграли Eiffel, Ada95 и почти все остальные объектно-ориентированные языки. Действительно интересный вопрос не «почему умер Smalltalk», а «почему выжил C ++». Я думаю, что C ++ имел лучшее взаимодействие с C, и его было легче распространить на легаси-системы.

Заключение

Это лишь небольшая часть важных для программирования языков, которые уже мертвы. Alphard, Altran, Argus, Automath, BCPL, Comtran, CPL, Eiffel, Flow-Matic, Hope, Hypercard, ISWIM, Jovial, MacSyma, Mesa, Miranda, Multics Shell, Planner, SMP, Sketchpad внесли свой вклад в современный мир программирования.

Большинство влиятельных языков никогда не были популярными, но их ДНК проявляется спустя десятилетия после того, как они были забыты. Есть бесчисленное множество языков, идеи которых не были оценены, например, «Энциклопедия языков программирования» состоит из более чем 8 тыс. языков.

Играйте: У Хекслета есть свой Open Sourse проект CodeBattle — в нем можно прокачивать свои навыки решения алгоритмов и задачек

JOVIAL

Jovial (буквально — весёлый) — язык программирования, в основе которого лежал язык IAL (International Algorithmic Language), один из первых диалектов Алгола, в дальнейшем усовершенствованный и получивший название OVIAL (Own Version of the IAL).

История создания

Американский программист Джолиус Шварц (Jules Schwartz) дополнил OVIAL рядом полезных усовершенствований, прибавил к аббревиатуре первую букву своего имени, и в январе 1959 года на свет появился Jovial. Одной из главных целей создания Jovial Шварц поставил возможность создания кросс-платформных программ, способных работать в реальном режиме времени. В внутреннюю структуру Jovial-машины были заложены гибкие возможности оптимизации кода, не зависящие от платформы, и быстрый перенос программ при модификации архитектуры целевого компьютера. Жёсткая структура организации файлов с исходными текстами, не допускающая машинно-зависимых синтаксических конструкций, позволяла легко переносить программы на различные платформы. Именно эти возможности и оказались ключевыми при выборе этого языка ВВС США.

Применение

Сегодня язык программирования Jovial, несмотря на своё название, применяется для создания отнюдь не развлекательных программ. Хорошо продуманная кросс-платформная идеология и успешная практика применения позволили Jovial завоевать признание практически во всех военных областях. На нём были написаны программы, исполняемые на бортовых процессорах многих американских военных самолётов (бомбардировщики B-2, транспортные самолёты C-17, истребители F-15, F-16, F-18, F-22, F-117), вертолётов огневой поддержки, ракет тактического и стратегического назначения, военных крейсеров, космических спутников и др. Этот язык используется для создания ПО, управляющего мобильными и стационарными ракетными установками на поле боя, в радарных системах слежения. Применяют его в некоторых видах боевой техники американские силы специального назначения.

Чтобы не распылять усилия разработчиков и обеспечить единый подход к созданию и унификации ПО, МО США приняло стандарт на набор команд для 16-разрядного микропроцессора, используемого в бортовых военных системах. Этот стандарт получил название MIL-STD-1750, в дальнейшем набор команд был дополнен несколькими дополнительными инструкциями и модификация этого стандарта MIL-STD-1750A используется в американской армии по сей день.

В силу жёстких требований, предъявляемых к языку, реализация Jovial, созданная в ВВС США, представляет собой не просто компилятор, а целый комплекс стандартизованных средств разработки. В этом на него похожа Java, в типичную поставку которой помимо компилятора обязательно входит виртуальная Java-машина, набор библиотек, средства отладки, вьюверы, имитирующие работу в Сети и т. д. Так и Jovial распространяется в комплекте разработчика под названием ITS. Этот комплект представляет собой прекрасный пример тщательно продуманного подхода к выбору и совершенствованию средства разработки ПО, которое планируется использовать в ответственных областях десятки лет. В типовой комплект ITS входят кросс-платформные компилятор и макроассемблер, поддерживающий систему команд 1750А, сборщик, символьный интерактивный отладчик, поддерживающий режим реального времени, программный симулятор процессора с набором команд 1750А, библиотека стандартных модулей и загрузчик кода в оборудование 1750 (при наличии соответствующих аппаратных плат). Первая очередь этого комплекса была закончена в 1984 году. Первоначально она функционировала только на мейнфреймах и middleframes, а сегодня работает также под управлением SCO UNIX 3.2 или MS-DOS. ITS обеспечивает генерацию кода (помимо МП 1750А) для VAX, IBM PC, Z80, M680X0, RISC-компьютеров и ряда других. Наиболее популярная реализация ITS для компьютеров серии VAX используется сегодня в более чем 50 подразделениях МО США. Её догоняет реализация для персоналок, работающая под управлением UNIX.

Распространине

ITS распространяется правительством США бесплатно. Для получения (или попытки получения) ITS рекомендовано обращаться к атташе по вопросам авиации американского посольства.

Сегодня имеются и коммерческие версии Jovial, распространяемые, впрочем, за пределами США только с разрешения американских компетентных органов. Стоят эти версии порядка 75 000 долл. Для их приобретения можно попробовать написать письмо на адрес mailto:usafjovial@aol.com или mailto:millerjm@sm4.ascsm.wpafb.af.mil. Одна из этих версий представляют собой компилятор Jovial для платформ VAX/VMS, SPARC/SunOS, HP-UX, позволяющий получать код для Z8000 и 1750А. В комплект дополнительно включаются ассемблер для каждой платформы, сборщик, симулятор целевых наборов команд и символьный отладчик, использующий интерфейс X Window System. Настройки оптимизации позволяют получать код, который в сравнении с кодом, написанным на ассемблере вручную, даёт выигрыш в размере программы и скорости её выполнения на 15 %.

В последнее время стремительно возросшая сложность современной боевой техники потребовала более мощных микропроцессорных устройств управления. Летом 1996 года был выпущен компилятор для Jovial, работающий под управлением ОС Solaris компьютеров Sun SPARC. Он позволяет получать код для бортовых управляющих систем, основанных на MIPS-микропроцессорах серии R2000/3000/4000. Компилятор встроен в графическую оболочку, содержащую редактор и символьный отладчик. Эта оболочка хорошо известна разработчикам программ на Аде для SPARC-компьютеров, теперь она стала доступна и Jovial-программистам.

МО США уделяет языку Jovial большое внимание. За последние 15 лет использования Jovial американская армия инвестировала в его совершенствование более 16 миллионов долларов. Суммы, стимулирующие написание программ на Jovial и перенос других программных систем на этот язык, увеличиваются с каждым годом. Для организации полной совместимости всего ПО, используемого в бортовых системах, американские военные приняли стандарт MIL-STD-1589 на версию этого языка J-73. Теперь всё программное обеспечение, разрабатываемое в подразделениях МО США на языке Jovial, должно соответствовать данному стандарту. В ближайшем будущем ВВС США собирается провести полный реинжиниринг своей компьютерной инфраструктуры, при этом всё ПО, работающее в бортовых микропроцессорных устройствах, планируется перенести на Jovial и Ada. В данном проекте особое внимание уделяется связке этих языков. Дело в том, что множество программ, предназначенных для решения боевых задач, довольно бессистемно разрабатывалось как на Jovial, так и на Ada. Теперь же планируется осуществить интеграцию компьютерных программ, написанных на этих языках, с целью обеспечения возможности их совместного использоывания и лёгкой модификации ПО. Для решения этой задачи будет активно использоваться продукт фирмы Xinotech Research — Xinotech Language Translator (XLT), предназначенный для семантического анализа языков программирования и перевода исходных текстов программ с одних языков на другие с возможностью интерактивного контроля процесса преобразования со стороны пользователя. В XLT используются описания языков с помощью абстрактных грамматик на XPAL (Xinotech Plan Abstraction Meta-language) и применяются технологии сопоставления с образцом. Похожие возможности имеются у созданного в нашей стране РЕФАЛа. XLT на сегодня предоставляет возможность следующих парных преобразований, гарантирующих корректный результат: Pascal — Ада, CMS-2 — Ада и Jovial — Ада.

Перспективы Jovial в свете усилий, предпринимаемых МО США, можно оценить как очень хорошие, особенно если учесть его планируемую тесную «стыковку» с Ada. Возрастающая «электронизация» современной боевой техники требует не только адекватных её возможностям средств создания ПО, но также использования существующих разработок и интеграции их в новые инфраструктуры. Связка Jovial — Ada, достаточно эффективно используемая в этой области уже сегодня, в недалёком будущем однозначно не будет иметь конкурентов в сфере создания программ для встроенных бортовых систем военного профиля.

Веселый

JOVIAL — это язык программирования высокого уровня, основанный на Алголе 58 , специализирующийся на разработке встроенных систем (специализированные компьютерные системы, предназначенные для выполнения одной или нескольких специальных функций, обычно встроенных как часть более крупного и законченного устройства, включая механические части). Это был основной язык системного программирования в 60-70-е годы. [ необходима цитата ]

Веселый

Парадигмы Процедурные , императивные , структурированные
Семья АЛГОЛ
Разработано Корпорация системного развития
Разработчик Партнеры по разработке программного обеспечения [1]
Впервые появился 1960 ; 61 год назад ( 1960 )
Печатная дисциплина статический , прочный , безопасный , структурный
Сфера Лексический
Основные реализации
мейнфрейм , микро, ПК, macOS , Windows , Linux , SPARC , PowerPC , 1750A, другие устаревшие системы
Диалекты
J3, J3B-2, J73
Под влиянием
Алгол , шалфей
Под влиянием
CMS-2 , Коралл 66 , СИМПЛ

ДЖОВИАЛ был разработан в качестве нового «высокого порядка» [ править ] Язык программирования , начиная с 1959 годом группой специалистов Корпорации по развитию системы (SDC) во главе с Жюлем Шварц сочинить программное обеспечение для электроники военных самолетов. [2]

Название JOVIAL является аббревиатурой от Жюльской собственной версии [3] международного алгебраического языка ; Международный алгоритмический язык (IAL) — это название, первоначально предложенное для АЛГОЛА 58 . [4] Согласно Шварцу, язык первоначально назывался OVIAL , но против этого высказывались различные причины. ДЖОВИАЛ затем предложил, без смысла , прикрепленного к J . Несколько в шутку было предложено назвать язык в честь Шварца, поскольку он был председателем собрания , и это неофициальное название прижилось. [5]

В течение 1960-х годов JOVIAL входил в серию американских военных L-проектов , в частности ITT 465L Strategic Air Command Control System (проект Стратегической автоматизированной системы командования и управления (SACCS)) из-за отсутствия компьютерного программирования в реальном времени. доступные языки. Около 95 процентов проекта SACCS, управляемого International Telephone & Telegraph (ITT) с программным обеспечением, в основном написанным SDC, было написано на JOVIAL. На разработку программного обеспечения у программиста ушло два года и менее 1400 лет, что составляет менее половины эквивалентного времени в L-проекте SAGE . [6]

В конце 1970-х — начале 1980-х годов ВВС США приняли на вооружение стандартизированный центральный процессор (ЦП) MIL-STD-1750A , и для этого процессора были созданы последующие программы JOVIAL. Несколько коммерческих поставщиков предоставили компиляторы и соответствующие инструменты программирования для создания JOVIAL для процессоров, таких как MIL-STD-1750A, включая Advanced Computer Techniques (ACT), системы TLD, системы проприетарного программного обеспечения (PSS) и другие. [7] [8]

JOVIAL был стандартизирован в 1973 году с помощью MIL-STD-1589 и пересмотрен в 1984 году с помощью MIL-STD-1589C . Он по-прежнему широко используется для обновления и поддержки программного обеспечения на старых военных транспортных средствах и самолетах. Обычно используются три диалекта: J3, J3B-2 и J73.

По состоянию на 2010 г. [Обновить] , JOVIAL больше не поддерживается и не распространяется Офисом программы USAF JOVIAL (JPO). Программное обеспечение, ранее распространяемое JPO, по-прежнему доступно через коммерческие ресурсы Software Engineering Associates, Inc. (SEA), как и другие комбинации хост / целевых процессоров, включая Windows , Linux , Mac OS X на PowerPC , SPARC , VAX , 1750A , PowerPC. , TI-9989 , Zilog Z800x , Motorola 680×0 и IBM System 360 , System 370 и System z . Кроме того, DDC-I , которая приобрела часть Advanced Computer Techniques, также перечисляет компиляторы JOVIAL и связанные с ними инструменты по состоянию на апрель 2020 года. [Обновить] . [9]

Большая часть программного обеспечения, реализованного в JOVIAL, критически важно , и его обслуживание становится все труднее. В декабре 2014 года было сообщено , что программное обеспечение , полученные из бодрого кода , полученного в 1960 — х годах участвовали в крупных неудачах в Великобритании «S управления воздушным движения инфраструктуры, а также о том , что агентство , которое использует его, NATS Holdings , был того , чтобы обучить свой ИТ-персонал в JOVIAL, чтобы они могли поддерживать это программное обеспечение, замена которого не планировалась до 2016 года. [10]

Языки, на которые повлиял JOVIAL, включают CORAL , SYMPL , Space Programming Language (SPL) и, в некоторой степени, CMS-2 . [11] интерактивное подмножество бодрый называется ТИНТ, похожий на JOSS была разработана в 1960 — х годах. [5]

JOVIAL включает в себя функции, отсутствующие в стандартном ALGOL, такие как элементы (теперь называемые структурами ), массивы элементов, переменные состояния (теперь называемые перечислениями ) и встроенный язык ассемблера . [12]

Он также включал положения для «упакованных» данных в таблицах. Упаковка таблицы относится к распределению элементов внутри записи по словам хранения (биты в единице данных). Это было важно в связи с ограниченной памятью и хранилищем вычислительных систем эпохи JOVIAL.

Коммуникационный пул (COMPOOL) в Jovial похож на библиотеки файлов заголовков для таких языков, как PL / I и C.

Известные системы, использующие встроенное программное обеспечение JOVIAL, включают:

  • Спутник связи Милстар
  • Усовершенствованная крылатая ракета
  • Бомбардировщики В-52 , Б-1Б , [13] Б-2
  • Транспортные самолеты С-130 , С-141 , С-17
  • F-111 , F-15 , F-16 (до блока 50), F-117 истребителей
  • ЛАНТИРН
  • Самолет У-2
  • Самолет Boeing E-3 Sentry ДРЛО (до блока 40/45)
  • Крейсера Navy Aegis
  • Армейская реактивная система залпового огня ( РСЗО )
  • Армия Sikorsky UH-60 Black Hawk вертолетов
  • Реактивные двигатели F100 , F117 , F119
  • Система ПВО NORAD (система Hughes HME-5118ME)
  • Система наземного окружения ПВО НАТО (NADGE)
  • Ракетные двигатели RL10
  • Civil NAS (Национальная система воздушного пространства) Управление воздушным движением
  • APG-70 , APG-71 и APG-73 бортовых радиолокационных систем [14]

Следующий пример взят из Руководства по программированию для языка JOVIAL (J73). [15]

В этом примере определяется процедура с именем, RETRIEVE которая принимает входной аргумент целого числа без знака CODE и выходной аргумент с плавающей запятой VALUE . Он ищет в массиве из 1000 элементов TABCODE запись, которая соответствует CODE , а затем устанавливает переменную VALUE с плавающей запятой на элемент массива, TABVALUE имеющий тот же индекс сопоставления массива. Если соответствующий элемент не найден, VALUE устанавливается значение −99999.0 .

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *