Рефераты. Язык АДА

программ (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



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.