Сведения об истории разработки и появлении на свет языка программирования Ада, а также понимание целей его разработки не только интересны сами по себе, но они также дают некоторое представление как о самом языке, так и об его свойствах.
История языка программирования Ада
В 1974 году в Министерстве Обороны США (US Department of Defence / US DoD) осознали, что они теряют много времени, усилий и денег на разработку и сопровождение встроенных компьютерных систем (например, систем наведения ракет).
В это время использовалось около 450 различных языков программирования и/или их расширений. Это увеличивало затраты времени и средств на разработку новых систем и на постоянную техническую переподготовку персонала для обслуживания уже созданных систем. Кроме того, сопровождению существующих систем мешало отсутствие стандартизации в инструментах поддержки (редакторы, компиляторы и т.д.). Все эти факторы привели к тому, что в Министерстве Обороны США осознали необходимость в едином мощном языке программирования, который должен был бы использоваться всеми поставщиками встроенных компьютерных систем.
Ада, качество и стиль. Руководство для профессиональных программистов.
Работы по разработке были начаты в 1975 году после того как в Министерстве Обороны США был разработан список требований к языку, который был широко распространен. Однако, ни один из существовавших на тот момент времени языков программирования не соответствовал выдвинутым требованиям. В итоге, в 1977 году Министерство Обороны США выдвигает предложение создать новый язык. В отличие от «комитетных языков», таких как КОБОЛ, новый язык был предметом конкурсного пересмотра в широких индустриальных и академических кругах.
Из большого числа предложений было отобрано четыре, для последующего пересмотра и доработки. Позже, для дальнейшего уточнения, из них отобрали два, и в финале выбрали проект представленный компанией Cii-Honeywell Bull. Этому языку и было дано имя Ада, в честь Августы Ады Байрон, графини Лавлейс, дочери английского поэта лорда Байрона. Она была сотрудницей Чарльза Беббиджа, изобретателя аналитической машины, и написала для этой машины программу вычисления чисел Бернулли — Августа Ада по праву считается первым в мире программистом. Разработкой данного проекта руководил Jean Ichbiah.
В 1983 году язык становится стандартом ANSI/MIL-STD-1815A-1983, а затем и международным стандартом ISO 8652:1987. Язык описывается в справочном руководстве по языку (Language Reference Manual), часто называемом LRM. Ссылки на это справочное руководство часто встречаются в книгах, посвященных языку программирования Ада, а также во многих сообщениях об ошибках компилятора. Эта книга часто рекомендуется для прочтения. Хотя читать ее довольно сложно, она является исчерпывающим авторитетным источником в вопросах по языку программирования Ада (была сформирована специальная постоянная группа для выявления противоречий в языке).
Язык претерпел пересмотр при введении нового ISO стандарта в начале 1995 года (ISO/IEC 8652:1995). Этот стандарт исправляет многие упущения и недостатки оригинального языка, и дополняет его многими новыми полезными свойствами.
Создаем свой ЯЗЫК ПРОГРАММИРОВАНИЯ. Лексер, Парсер, Абстрактное синтаксическое дерево (AST)
Для предотвращения размножения множества различных версий языка Ада, в «Ada Joint Program Office» (AJPO) заняли довольно оригинальную позицию — они зарегистрировали имя «Ada» как торговую марку. Таким образом, вы не имеете права распространять компиляторы языка программирования Ада до тех пор, пока они не пройдут тестирование на совместимость. Позднее эти требования были ослаблены, и теперь защищенное название звучит как «Validated Ada».
Результирующий сертификат ратификации (валидированности) ограничен по времени и имеет дату срока истечения. После истечения срока сертификации компилятор не может больше распространятся как ратифицированный, — «Validated Ada», — компилятор языка программирования Ада. Таким образом AJPO убежден в том, что все, в текуший момент распространяемые компиляторы, соответствуют требованиям текущего стандарта.
Это помогает убедиться в том, что любая программа на языке Ада может быть скомпилирована на любой системе — с этой точки зрения деятельность AJPO более успешна чем любые другие языковые группы.
Цели разработки
«Язык Ада был разработан учитывая три взаимно перекликающиеся концепции: надежность программирования и сопровождения, программирование как человеческая деятельность и эффективность»
«Таким образом, читабельности программ придавалось большее значение, чем легкости их написания»
Источник: www.ada-ru.org
Хочу всё знать. Язык Ада
Язык Ада более-менее всегда был на слуху. На школьной скамье мы посмеивались над его названием, в университетской программе он сухо упоминался в качестве языка, разработанным по требованию Министерства Обороны США, но непосредственно до изучения синтаксиса или применения дошли лишь редкие программисты. Отсюда сложилось ошибочное мнение, что язык Ада функционирует лишь на прошловековом оборудовании, и потребность в нем пропадет вместе с естественной модернизацией.
И это очень далеко от правды.
Появление
В 70-х годах 20 века, в разгар холодной войны, Министерство Обороны США устроило международный конкурс, по результатам которого необходимо было выбрать язык программирования для использования в военных целях. Однако ни один из существующих языков не устроил членов комиссии, поэтому путём долгого выбора и нескольких доработок на свет появился язык Ада, названный так в честь Ады Лавлейс. Далее началась многолетняя волокита со стандартизацией, регистрация торговой марки, запреты на кастомные трансляторы и прочие действия, отбившие желание массовой аудитории работать с Ада.
На выходе же получился достаточно нишевый язык, предназначенный для сложных вычислительных систем с повышенными требованиями по безопасности. Опять-таки из-за требований Пентагона и строгих стандартов взаимодействие с другими языками программирования крайне затруднено, поэтому до недавнего времени перейти на массовый рынок у Ада практически не было шансов. Но с удешевлением техники и усложнением используемых технологий такой шанс появляется.
Синтаксис
Изначально, Ада — модульный язык программирования со строгой типизацией, унаследовавший синтаксис от Паскаль и Алгол. Если вы учили первый в школе или институте, то глядя на «Hello, World!» должны испытать ностальгию:
procedure Hello is
use Ada.Text_IO;
begin
Put_Line(«Hello, world!»);
end Hello;
Одним из главных требований к языку была надёжность его использования. Соответственно, это повлекло за собой строгие ограничения по структуре, типам, написанию и многому другому. Кроме того, почти все ошибки здесь улавливаются на этапе компиляции.
Другим требованием была максимальная читаемость кода в распечатанном виде, что повлекло за собой тяжеловесность полученного языка и невысокую гибкость.
Более поздние стандарты частично решали эти проблемы, но по понятным причинам, они не сделали из Ада второй Python.
Ада сегодня
Вопреки мнению широкой аудитории, язык Ада до сих пор активно используется, не только в США и не только в военной индустрии. Так, например, часть ПО самолёта-амфибии Бериев Бе-200 написана как раз на Ада. Поезда метрополитена без машиниста, которые курсируют во многих крупных городах (Париже, Лондоне, Нью-Йорке и др.), также используют оборудование с американским военным языком.
И да, конечно, среди «клиентов» была военная и гражданская авиация (в частности, Боинг-777), ракеты, шаттлы, спутники — в общем, практически весь перечень бесконечно дорогой американской продукции, предполагающей высшую степень безопасности.
Перспективы
Язык Ада критиковался и в момент появления, и когда стало понятно, что грандиозные планы Пентагона не вполне стыкуются с реальностью, и тем более сейчас. Причиной тому является неудобный язык, сложность стандартов, написанных в 1983 и 1995 году, а также недальновидность разработчиков, лишивших язык Ада массовой аудитории.
Впрочем, почти 40 лет активного использования подтверждают, что пожалуй со своей главной задачей язык Ада справился — с его помощью всё ещё можно создавать надёжный код для систем с повышенными требованиями к безопасности. При этом, если вы посмотрите на современные тенденции, количество таких изделий неуклонно растёт: автомобили с автопилотом и гибридными двигателями, частные космические аппараты и малые летательные средства, скоростные поезда, а также огромное количество встраиваемых систем. Всё это потенциальное поле для деятельности языка Ада. Добавьте сюда тот факт, что стандарт был серьёзно переработан и модернизирован в 2012 году, инструменты для работы тоже выходят и обновляются.
Таким образом, язык Ада — это и фрагмент из не самого приятного прошлого, и один из инструментов для строительства яркого будущего. И он точно не собирается на пенсию.
Источник: gb.ru
10.7.2. Язык программирования ada
Первым полным языком программирования в реальном времени является ADA. В середине 1970-х годов Министерство обороны США для сокращения расходов на разработку и сопровождение своих систем управления реального времени приняло решение ввести единый язык программирования в качестве альтернативы сотням использовавшихся тогда языков. В 1979 году министерство одобрило предложения, выдвинутые французской компанией Honeywell Bull. Язык назван в честь Августы Ады Байрон, графини Лавлейс (Augusta Ada Byron, Countess of Lovelace, 1815-1852), которую можно считать первым программистом в истории — она писала программы для аналитической машины (механического компьютера, который никогда не был построен), спроектированной английским изобретателем Чарльзом Бэббиджем (Charles Babbage).
Язык ADA является полной средой разработки программ с текстовым редактором, отладочными средствами, системой управлениями библиотеками и т. д. Спецификации ADA закреплены американским стандартом ANSI/MIL-STD-1815A и включают I средства контроля соответствия этому стандарту. Не допускаются диалекты языка — I для сертификации компилятор должен правильно выполнить все эталонные тесты.
Структура языка ADA похожа на структуру языка Pascal, но его возможности значительно шире, в особенности применительно к системам реального времени. Процессу в ADA соответствует задача, которая выполняет независимо от других задач на выделенном виртуальном процессоре, т. е. параллельно с другими задачами. Задачи могут быть связаны с отдельными прерываниями и исключениями и работать как их обработчики.
Новым понятием, введенным в ADA, является пакет — модуль со своими собственными описаниями типов данных, переменных и подпрограмм, в котором явно указано, какие из программ и переменных доступны извне. Пакеты могут компилироваться отдельно с последующим объединением в один исполняемый модуль. Это средство поддерживает модульную разработку программ и создание прикладных библиотек. В начале 1990-х годов язык ADA был пополнен новыми функциями для объектно-ориентированного программирования и программирования в реальном времени.
Машинно-ориентированное программирование низкого уровня поддерживается ADA не достаточно эффективно — это следствие постулата, что все задачи можно решить средствами высокого уровня. Например, для операций ввода/вывода в ADA используются прикладные пакеты с заранее определенными функциями для управления аппаратными интерфейсами и доступа к внешним данным.
Основным недостатком ADA является его сложность, которая делает язык трудным для изучения и применения. Существующие компиляторы являются дорогостоящими продуктами и требуют мощных процессоров. До сих пор ADA не получил ожидавшейся популярности, и сомнительно, что это когда-нибудь произойдет.
10.7.3. Языки С и C++
Язык программирования С, несмотря на отсутствие в нем многих средств, которые теоретики считают необходимыми для хорошего языка программирования, пользуется большим успехом начиная с 1980-х годов по настоящее время. Этот язык стал популярным для всех приложений, требующих высокой эффективности, в частности для программ реального времени. Для обычных микропроцессоров, используемых в системах управления, имеются С-компиляторы и системы разработки многих производителей. В промышленности существует явная тенденция к широкому применению языка С и операционной системы UNIX, которая сама написана на С, поскольку приложения, написанные на С, машинно-независимы и требуют очень небольших усилий для адаптации к работе в различной аппаратной среде.
Философией С является разбиение программ на функции. С — слаботипизиро-ванный язык и позволяет программисту делать почти все вплоть до манипуляции с регистрами и битами. Такая свобода делает язык небезопасным, поскольку компилятор не может проверить, являются ли подозрительные операции умышленными или нет.
Небольшое количество заранее определенных функций и типов данных делает программы легко переносимыми между разными системами. С поддерживает как хороший, структурированный, так и плохой стиль программирования, оставляя ответственность за качество разработки на программисте. Стиль программирования приобретает особое значения при сопровождении программ: плохо написанная и откомментированная программа на С — такая же загадка, как и ассемблерский код. Язык С регламентирован международным стандартом ISO 9899.
Язык С предпочтителен для написания программ с обращениями к функциям операционной системы, так как он обладает отличной совместимостью между логикой определения переменных и синтаксисом обращения к системе. Поскольку наиболее распространенные операционные системы в приложениях автоматического управления процессами основываются на UNIX, язык С является почти вынужденным выбором при разработке программ. Почти все примеры в современной технической литературе представлены на С, а для примеров в настоящей книге принят Pascal-подобный синтаксис, поскольку по сравнению с С его легче читать неспециалистам.
Язык C++ представляет собой значительно более мощный инструмент, чем С, на основе которого он создан. В C++ значительно улучшена абстракция данных с помощью понятия класса, похожего на абстрактный тип данных с четким разделением между данными и операциями. Классы C++ значительно легче использовать на практике, чем аналогичные понятия в других языках, поскольку C++ поддерживает объектно-ориентированное программирование и поэтапное уточнение типов данных.
Главным преимуществом языка C++ является его способность поддерживать разработку легко используемых библиотек программ. Программирование в реальном времени непосредственно в C++ не поддерживается, но может быть реализовано с помощью специально разработанных программных модулей и библиотек классов.
Источник: studfile.net