Ada (язык программирования)

В первую очередь это относится к бортовым системам управления военными объектами, такими как корабли, самолеты, танки, ракеты, снаряды и т.д. Разработчики не ставили перед собой задачу создать универсальный язык, поэтому решения, принятые авторами Ada, следует воспринимать в контексте специфики выбранной предметной области. Язык назван в честь Ады Лавлейс.

Особенности языка В своей первоначальной версии, стандартизированной в году, Ada представляет собой структурированный, модульный язык программирования с высокоуровневыми средствами для программирования параллельных процессов. Синтаксис Ada унаследован от таких языков, как Алгол или Паскаль, но расширен и стал более строгим и логичным.

Ада - строго типизированный язык, в нем исключена работа с нетиповыми объектами, а автоматические преобразования типов сведены к абсолютному минимуму. В стандарте года в язык были добавлены основные средства объектно-ориентированного программирования, в стандарте эти средства были дополнены, поэтому современная Ада является объектно-ориентированным языком программирования. К особенностям синтаксиса относятся: Язык является регистронезависимым.

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

Поддерживается механизм обобщенных конфигурируемых модулей: пакетов, процедур и функций, позволяющих описывать обобщенные алгоритмы обработки данных без указания конкретного типа. Развитая система типов, как встроенных, так и генерируемых программистом. Существует множество способов создания новых типов, язык поддерживает два различных понятия: "подтип" и "производный тип". Переменные типа и подтипа совместимы, переменные типа и его производного типа - нет.

Средства обработки исключений.

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

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

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

Для удовлетворения требований надежности язык был разработан таким образом, чтобы обнаруживать как можно больше ошибок на этапе компиляции. Кроме того, одним из требований при разработке языка было максимальное удобство чтения, даже в ущерб удобству написания. Это привело к созданию образа Ada как сложного, непонятного и трудного в использовании языка.

С Адой. История Язык был разработан в рамках международного конкурса, спонсируемого и финансируемого Министерством обороны США.

Цель заключалась в том, чтобы получить язык программирования, который обеспечил бы единый язык для разработки проектов для военных заказчиков, в первую очередь встраиваемых систем для военных и для больших военных компьютеров, использующих процессор iAPX от Intel. Эта работа началась в году, с набора требований к языку, который в конечном итоге удовлетворил бы разработчиков такого рода систем.

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

Из 15 представленных проектов было отобрано четыре, все они были основаны на языке Pascal. Эти проекты были отправлены на доработку. На следующем этапе нужно было выбрать два из четырех проектов, и после доработки был выбран один из них. Этот язык был назван Ada, а группа, разработавшая его, во главе с французом Жаном Ишбиатом, назвала язык в честь Августы Ады Кинг Лавлейс, дочери поэта Ж. Бирона.

Байрона, который разрабатывал программы для вычислительной машины Бэббиджа и считается первым программистом в мире. В этом году язык был официально стандартизирован ANSI. Министерство обороны США присвоило слову "Ada" статус зарегистрированной торговой марки, запретив выпуск трансляторов языка, не прошедших официальное тестирование на соответствие стандартам.

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

Это пресекало возможность появления "версий" или "диалектов" Ады. В году язык Ада был официально стандартизирован ISO. К году в мире уже существовало несколько компиляторов, соответствующих стандарту языка Ada. В году был принят новый стандарт языка Ада, известный как Ada В языке были представлены средства объектного программирования. Кроме того, язык был дополнен более совершенными средствами для взаимодействия с программами, написанными на других языках.

В марте того же года были опубликованы изменения к стандарту Ada. Они касались в основном возможностей объектно-ориентированного программирования: ввели интерфейсы, приняли синтаксис вызова методов, характерный для большинства гибридных языков, и добавили ряд других расширений. Группа изучала все открытые и, по слухам, секретные данные о языке Ada, исследовала возможность и целесообразность разработки и использования Ada в СССР. Деятельность этой группы привела к тому, что к концу 1990-х годов были разработаны компиляторы Ada практически для всех компьютеров в Советском Союзе.

На русском языке было опубликовано несколько книг по языку Ада. Московский государственный университет работает над созданием собственных пакетов Ada-тестирования на соответствие стандартам. В ЛГУ для создания системы Ada была использована система Pallada, ранее разработанная для реализации Algol, которая была переведена на язык Ada. Система содержит интегрированную среду разработки, компилятор, текстовый редактор, отладчик, библиотеки, систему контроля версий и командный интерпретатор.

В Министерстве обороны, Министерстве гражданской авиации и Министерстве образования и науки приняты три программы по разработке программного обеспечения на Ada, но разработка этих программ идет медленно и нескоординированно. <В результате Ada малоизвестна в России, большинство современных российских программистов считают ее "мертвым языком" и ничего о ней не знают. В России и СНГ Ада используется немногими энтузиастами. Тем не менее, язык используется для разработки промышленного программного обеспечения. Известно несколько проектов, разработанных на Ada, которые работают в России. Основная задача - обеспечение обмена документальной информацией в сетях передачи данных Министерства обороны Российской Федерации. Программно-аппаратный комплекс был разработан совместно организацией по производству средств вычислительной техники и автоматизации и группой программистов автономного сектора Северо-Кавказского центра управления воздушным движением "Стрела".

Программное обеспечение комплекса было написано на языке программирования Ada с использованием компилятора GNAT. Комплекс штатного пилотажно-навигационного и связного оборудования для российского самолета-амфибии Бериева был разработан НИИ авиационного оборудования в Москве, Россия.

Критика С момента своего появления язык Ada подвергался критике со стороны некоторых признанных авторитетов в области языков программирования, в первую очередь за сложный синтаксис и большой размер. В частности, язык критиковали Чарльз Хоар и Никлаус Вирт, которые участвовали в конкурсе со своим проектом, но выбыли после первого этапа, а также Эдсгер Дейкстра.

Дейкстра усомнился в том, что такой сложный язык, как Ada, может быть наблюдаемым и управляемым. Если Ada собирается выпустить стандарт, то желательно, чтобы он был однозначно документирован.

Дейкстра считает, что если бы Ada была стандартом, то она была бы однозначно документирована.

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

Дейкстра

Для того, чтобы убедиться, что невозможно хотя бы твердо установить, что оба документа определяют один и тот же язык.

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

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

Если вы не освоите все детали языка, вы можете споткнуться о них позже, и это может привести к неприятным последствиям". Жан Ишбиа, руководитель группы разработчиков Ada, выразив свое "уважение и восхищение" Вирту, не согласился с ним, сказав: "Вирт верит в простые решения сложных проблем.

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

Они также отмечают, что идея о том, что разработка на Ada сложна, верна лишь отчасти: написание простой программы на Ada действительно занимает больше времени, чем на других, менее формальных языках, таких как C, но отладка и сопровождение программ, особенно больших и сложных, намного проще. На практике оказалось, что, хотя Ада и занимает нишу, для которой она была разработана, в военных и связанных с ними встраиваемых системах, она так и не вышла за пределы этой ниши ни на Западе, ни в СССР, ни на постсоветском пространстве.

Этому есть много причин. Противники языка подчеркивают его сложность и недостатки, сторонники говорят прежде всего об объективных обстоятельствах его появления и негативных сторонах процесса его внедрения. С.

У него есть интересное мнение.

Он считает, что своими неудачами Ada обязана двум основным причинам: Во время разработки языка Пентагон предполагал, что все новое программное обеспечение будет разрабатываться только на Ada. Из-за этого Ada имеет очень рудиментарный опыт работы с другими языками. <На практике оказалось, что написать что-либо на Ada нереально, хотя бы потому, что необходимо взаимодействовать с существующими разработками на других языках. Поэтому отрасли, в которых не было жесткого требования "писать только на Ada", предпочитали другие языки, которые больше подходили для многоязычной среды. Стандарт года решил проблему совместимости с другими языками, но время было упущено. Парадоксально, но распространению Ada помешала финансовая и организационная поддержка Пентагона.

Программы на Ada, написанные для военных, выполнялись на самом мощном оборудовании, а разработчики компиляторов сосредоточились на прохождении тестов ACVC, и только потом на эффективности компилятора и производимого им кода. В начале XX века начался бум микрокомпьютеров, и трансляторы для распространенных языков Pascal, C и Basic были оперативно оптимизированы для маломощных систем. Для Ada не было стимула к такой модернизации, и в результате персональные компьютеры, которые через несколько лет стали основной частью мирового вычислительного парка, оказались без качественного транслятора Ada.

Естественно, Ada потеряла этот сегмент рынка. Лишь относительно недавно появился компилятор GNAT, отличающийся хорошим качеством и производительностью, но окно возможностей было упущено.

Навигация

thoughts on “Ada (язык программирования) ”

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

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