Ада (язык)

АДА (англ. Ada) — универсальный язык программирования высокого уровня, ориентированный на применение в системах реального времени и предназначенный для автоматизации задач управления процессами и/или устройствами, например, в бортовых (корабельных, авиационных) компьютерах.
Язык Ada разработан по инициативе Министерства обороны США в 1980-х годах, назван в честь математика Ады Августы Лавлейс (1815-1851). При проектировании языка в первую очередь внимание акцентировалось на надежности и эффективности — язык создавался специально для разработки больших программных комплексов реального времени для встроенных систем, к которым предъявляются высокие требования надежности; в первую очередь, это системы военного предназначения.
Язык Ада основан на идеях структурного программирования и обеспечивает разработку сложных многомодульных программ, высокую степень машиннонезависимости и переносимости. Ада содержит такие возможности паскалеподобных языков, как определение типов, общие управляющие структуры и подпрограммы, а также достижения теории языков программирования, полученные после 1970 года. Язык поддерживает логическую модульность, для которой данные, типы и подпрограммы — все могут быть пакетами. Физическая модульность достигается раздельной компиляцией. Язык Ада поддерживает программирование в реальном масштабе времени за счет механизмов распараллеливания и обработки исключений. Системное программирование поддерживается за счет доступа к системно-зависимым параметрам и управлением точностью при представлении данных.
К 1974 году в структурах Министерства обороны США использовалось множество различных языков программирования. Это увеличивало затраты времени и средств на разработку новых систем, на техническую переподготовку персонала. Руководители министерства пришли к выводу о необходимости использования единого языка программирования. В 1975 году был согласован список требований к такому языку. Ни один из существовавших на тот момент языков программирования (таких, как Паскаль, ALGOL-68 или PL/1) не соответствовал выдвинутым требованиям. Поэтому в 1977 году было принято решение создать новый язык, и был объявлен конкурс на его разработку. Из всех предложений было отобрано четыре (каждое из которых являлось расширением Паскаля), для последующего пересмотра и доработки. Позже, для дальнейшего уточнения, из них отобрали два, и в финале выбрали проект, представленный компанией Cii-Honeywell Bull. Этому языку было дано название Ada (изначально язык назывался DOD-1).
В 1983 году был принят стандарт языка ANSI/MIL-STD-1815A, а в 1987 — международный стандарт ISO 8652. В 1987 году появились и первые эффективные трансляторы Ады. Стандарт ISO был пересмотрен в начале 1995 года (ANSI/ISO/IEC 8652). Новый стандарт исправлял многие упущения и недостатки оригинального языка, и дополнял его многими новыми полезными свойствами, такими, как процедурные типы, базированные указательные типы (то есть указатели на нединамические объекты), иерархические библиотеки, дополнительные средства управления параллелизмом, множество стандартных библиотек. Кроме того, в Аде-95 появилась поддержка объектно-ориентированного программирования.
Следующий стандарт получил неформальное название Ada-2005, несмотря на то, что в 2005 году он еще не был принят. Ада-сообщество приняло решение отойти от традиции в неофициальном назывании стандарта по году опубликования, поскольку в 2005 году были согласованы все его основные параметры. В язык добавились множественное наследование, префиксная форма доступа к методам объектов, более гибкие ссылочные типы, улучшенное управление задачами и большое количество новых стандартных библиотек. Кроме того, Ада-2005 удовлетворяет стандарту ISO/IEC 10646 (2003), что позволяет использовать в названиях идентификаторов (имена переменных, функций) буквы русского и греческого алфавитов.
Ада считается единым языком программирования как для вооруженных сил США, так и для НАТО.
Кроме того, Ада используется для построения больших систем к которым предъявляются высокие требования по надежности, таких как: управляющие компьютерные системы для авиации (в том числе и гражданской); управляющие компьютерные системы для скоростных железных дорог; банковские системы; промышленная автоматика и робототехника; медицинская техника; телекоммуникационные системы.
Ада используется в высших учебных заведениях США и Западной Европы, как основа для изучения программирования, часто применяется в научно-исследовательских разработках. Ада-программа управляет движением поездов без машинистов в парижском метрополитене. Ряд фирм специализируются на разработке компиляторов, различных библиотек и инструментальных средств, охватывая широкий спектр аппаратных платформ и операционных систем. Кроме коммерческих средств разработки, существуют свободно доступные версии компиляторов, такие как ObjectAda от Aonix или GNAT от Ada Core Technologies.
Ада — самый стандартизованный язык программирования. Международный стандарт был принят до того, как появились первые работающие версии трансляторов, что позволило избежать несовместимости различных диалектов Ады. Ада превосходит СИ и C++ по строгости типизации данных, гибкости раздельной компиляции, возможности создания высоконадежных систем реального времени, наличием средств строгого контроля за параметрами функций и выходом индексов за границы массивов (80% ошибок, возникающих при создании программ на C/C++, связано именно с этим) и машинно-независимого представления двоичных значений (вместо битовых операций выполняется выборка полей записи). При этом Ада прозрачна семантически и синтаксически, поэтому изучать ее проще, чем Java.
Ада уступает C/C++ в поддержке новых операционных систем, а также в наличии средств сопровождения, отладки и формирования графических интерфейсов. Но в стандарт языка входят автоматически формируемые спецификации для стыковки с другими языками программирования, и на практике вместе с Адой применяются математические библиотеки Фортрана, системные функции, написанные на Си, классы Java для работы с Интернет. Поэтому встречаются многоязыковые интегрированные среды разработки, поддерживающие другие зыки, кроме Ады, например, IBM Rational Ada Developer (C/C++/Ada).
В Аде реализована как автоматическая сборка мусора (как в Java или C#), так и возможность непосредственного высвобождения памяти (как в C, C++, Pascal). Как и в C/C++, в Аде доступны богатые низкоуровневые средства. Встроенная поддержка многозадачности является уникальной особенностью языка программирования Ада, которая выгодно отличает его от большинства языков программирования. Эта поддержка обеспечивается не расширениями или внешними библиотеками, а с помощью стандартизированных средств, которые встроены непосредственно в язык программирования.
Статья находится в рубриках
Яндекс.Метрика