программ (IDE)?". Да, такие есть, одна из них, под названием ObjectAda,
поставляется компанией Aonix, www.aonix.com (Прим. перев: Данный продукт
построен в духе IDE от Microsoft для Visual С++)
ObjectAda существует в двух вариантах как для MS Windows, так и для X-
Windows (X-Windows это стандартная оконная графическая система ОС Unix.)
Однако учтите, что это коммерческий продукт, правда он доступен для
свободного скачивания в облегченном варианте и весит около 60~70Mb.
Ada -- это доведенный до логического завершения ( на данном этапе развития
_науки_ программирования ) Pascal. Ada -- универсальный язык
программирования и мощнейшее средство для software engineering. В равной
степени пригодна для написания "зубочисток" из 50 строк на один-два прогона
и для огромных особо надежных систем реального времени. Жестко определена
стандартом языка. В язык встроены средства параллельного программирования,
поддержка разноязыковых модулей, обработка исключительный ситуаций.
Разговоры о ее чрезмерной сложности -- бред, вызванный тем, что она
опередила свое время лет этак 6..10. Мощный инструмент не может быть
простым -- "Дубли у нас простые" ( (с) "Понедельник...", Стругацкие ), но и
слишком уж сложной я ее назвать не могу. Ada'е присущи строгость,
логичность, ортогональность, симметричность. Она по-хорошему консервативна,
несмотря на то, что в нее были введены революционные концепции, не понятые
и не принятые серыми fortran-кодерами начала '80-ых годов, чем и
объясняется ее сравнительно малое распространение. Первый стандарт вышел в
'83, в '95 вышел второй стандарт, расширивший и симметризовавший язык. Для
Ada'ы характерно очень жесткое следование стандарту, что делает программы
на ней сравнительно легко переносимыми с платформы на платформу. !)
Аналогии: Ada -- это Парфенон среди языков программирования, она
величественна, изящна, строга и прекрасна. Если считать, что Pascal это МиГ-
21, то Modula-2 это ( ранние версии ) МиГ-29 и ( нынешнее состояние ) МиГ-
33, а Ada'83 -- Су-27, и Ada'95 -- Су-37, и, продолжая аналогию, C -- F-
104, C++ -- F-117 ( much noise about nothing |) ). > Q 2: А чем Ada95
отличается от Ada83? Насколько я понял, > Q 2: в Ada95 есть ООП? Вот еще
отличия: - иерархические библиотеки (child units); - пассивные мониторы
наряду (protected records) с активными (tasks); - дополнительные средства
управления паралеллизмом (асинхронная передача управления); - стандартные
библиотеки для важнейших областей (системное программирование, системы
реального времени, распределенные системы, информационные системы,
численные рассчеты); - "мелочевка" типа ссылок на подпрограммы и
возможность связывать сообщение с возбуждаемым исключением; > Q 3:
Насколько я понял, в Ada95 есть ООП? А как оно > Q 3: реализуется?
Подлинное там ООП (как на функциональных > Q 3: языках) или паскале-си
подобное? "Паскале-си-подобное", хотя по форме на первый взгляд сильно
отличается.
Основной документ по Ada'е -- "Language Reference Manual", обычно
называемый просто "Стандарт" или "RM95" ( "RM 95", а то и просто "RM" ),
некоторые по старинке говорят "LRM", но это -- общепринятое сокращение для
стандарта Ады-83. Изложено, как и положено стандарту, суховато, но строго,
с примерами и ссылками на смежные вопросы. В отличие от пары-тройки других
"стандартов", которые мне привелось посмотреть, это, действительно,
Стандарт, а не рассуждения на тему об очередной версии компилятора и не
учебник программирования на базе данного языка, но, между тем, он вполне
пригоден для чтения. Второй документ -- "Ada 95 Rationale" ( обычно --
"Rationale" ). Это изложение и _обоснование_ базовых _проектных__решений_
языка (ответы на вопросы "а почему сделано именно так?") и демонстрация
этих решений в деле. Соответственно, более вольное, чем Стандарт, кое в чем
менее полное, а кое в чем более ппространное. С развернутыми примерами,
пояснениями, аналогиями и прочей весьма полезной "белетристикой". Читается
как хороший детектив. Литературные достоинства ( без тени иронии ) этого
документа отмечены не только мной. Я бы настоятельно рекомедовал эту книгу
в качестве именно _учебника_ для подготовленного и _мотивированного_
читателя ( такому читателю нет резона тратить время на традиционные
университетские учебники ), а RM использовать как справочник.
Язык Ада – двадцать лет спустя
Сергей Рыбин, Василий Фофанов
Если спросить отечественного ИТ-специалиста: "Что такое Ада?", большинство
лишь удивленно пожмет плечами, а кто-то даже скажет, что это мертвый язык,
когда-то придуманный Пентагоном, а ныне практически не используемый. На
самом же деле Ада и сегодня – вполне благополучный и активно применяемый в
различных областях язык программирования. Правда, большинство российских
программистов знают о нем мало.
Наверное, каждый, кому приходилось пользоваться четырнадцатой линией
парижского метрополитена, удивлялся, впервые увидев поезд, в котором нет
кабины машиниста. Движение поездов на этой линии полностью управляется Ада-
программой.
Несмотря ни на что, в отдельных областях техники Россия все еще "впереди
планеты всей". И одна из них – конструирование и производство самолетов-
амфибий. Всемирно признанным лидером в этой области является ТАНТК им. Г.
М. Бериева. Недавно это предприятие приобрело средства разработки бортового
программного обеспечения на базе языка Ада для использования при
модернизации своей последней модели Бе-200.
Между тем, большинство отечественных ИТ-специалистов в лучшем случае ничего
не знают о языке Ада, в худшем же – имеют совершенно неверное представление
об Аде как о языке-монстре, некогда придуманном Пентагоном для разработки
военных систем, а ныне окончательно забытом.
Немного истории
Официальным днем рождения языка программирования Ада можно считать 17
февраля 1983 года – дату утверждения стандарта ANSI/MIL-STD-1815-A–1983.
Технические и административные меры, предпринятые Минобороны как часть
проекта по созданию и внедрению Ады, полностью предотвратили появление и
распространение диалектов языка. С 1983 года и по настоящее время все
индустриальные реализации поддерживают действующий стандарт Ады. Когда же
речь заходит о подмножествах Ады, то эти подмножества определяются не
реализацией, а стандартами разработки конкретного класса систем.
В 1987 году стандарт ANSI без единого изменения был утвержден в качестве
стандарта ISO (ISO/IEC 8652), а когда в начале 90-х годов назрела
необходимость пересмотра стандарта, работа по пересмотру также была
проведена под управлением и на средства Министерства обороны США. Стартовал
новый международный проект, который завершился утверждением в конце 1994-го
и публикацией в начале 1995 года новой версии стандарта ISO/IEC 8652.
Именно этот документ и служит сегодня определением языка программирования
Ада.
В СССР в начале 80-х годов была образована Рабочая группа по языку
программирования Ада при Государственном комитете по науке и технике.
Тщательно собиралась и анализировалась вся открытая информация о проекте, а
усилиями специальных служб добывалась и закрытая информация. Были
организованы проекты по реализации Ады для практически всех
использовавшихся тогда архитектур ЭВМ, и некоторые из них оказались весьма
успешными. Распад СССР положил конец этой деятельности. Сегодня Ада
используется в России и СНГ отдельными энтузиастами.
Что такое Ада
Все современные индустриальные языки предоставляют по сути один и тот же
базовый набор возможностей, различаясь не тем, что они позволяют делать, а
тем, как именно они позволяют это делать. Однако Ада, по крайней мере, в
двух аспектах расширяет стандартный для современных языков набор
возможностей. Во-первых, Ада предоставляет высокоуровневые средства
программирования асинхронных процессов. Во-вторых, является единственным
языком, который без всяких оговорок можно назвать модульным.
Пример такой просто необходим для того, чтобы опровергнуть достаточно
распространенный миф о том, что Ада – большой, сложный и "тяжелый" язык,
пригодный лишь для написания сверхбольших и сверхсложных систем. На самом
же деле, Ада может применяться для разработки небольших и средних программ
с тем же успехом, как и современные клоны Си, Паскаля, Бейсика и Java. Так,
классический пример программы "Hello, World!" выглядит на Аде следующим
образом:
Легко видеть, что код на Аде похож на код на Паскале, который был выбран в
качестве его прототипа. Первая строка описывает связь данного
компилируемого модуля с другими модулями – указывается, что подпрограмма
Hello_World должна компилироваться совместно с модулем Ada.Text_IO, который
является компонентом предопределенной библиотеки.
Следующая программа определяет два асинхронных процесса [1]
:[pic]
[pic]
В разделе локальных объявлений процедуры Tasking_Example описывается
задача Outputter (строка 6, строки с 8 по 17 содержат тело этой задачи).
Когда управление в процессе, соответствующем процедуре Tasking_Example,
доходит до строки 20, перед тем, как выполнить этот первый оператор,
запускается процесс, соответствующий задаче Outputter, после чего два этих
процесса живут и асинхронно выполняются независимо друг от друга.
Выполнение оператора задержки (строки 14 и 20) состоит в приостановке
соответствующего процесса на указанное количество секунд. Таким образом,
процесс Tasking_Example приостанавливается на 20 секунд, а в это время
процесс Outputter начинает печатать значения увеличивающегося на единицу
счетчика, приостанавливаясь на одну секунду после вывода каждого значения.
По истечении 20 секунд процесс Tasking_Example устанавливает флаг Finished
в положение "истина", в результате завершается цикл в процессе Outputter.
Спецификация переменной Finished как атомарного объекта данных (строка 4)
делает невозможным одновременное чтение и изменение значения этой
переменной.
Далее представлен шаблон функции, позволяющей покомпонентно складывать два
одномерных массива. Этот шаблон может быть настроен на произвольный тип,
Страницы: 1, 2, 3, 4, 5, 6