Леди Ада

Часть третья

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

И в самом деле, каким бы хорошим язык не был, если у него нет компилятора или интерпретатора, он так и остаётся умозрительной теорией, призванной в этот мир из закоулков разума исключительно для того, чтобы удовлетворить любопытство и/или самолюбие учёных мужей, его создавших. Потому что такие языки никогда не создаются практиками - практик создаёт язык, одновременно создавая и компилятор для него (или интерпретатор, но поскольку речь в дальнейшем будет идти об Аде, а Ада - язык компилируемый, то слово "интерпретатор" будет опускаться). Однако поскольку Ада создавалась как язык для довольно-таки практических целей, первый компилятор появился вскоре после утверждения первого же стандарта.

Первые версии компилятора были не слишком удачными. Как сказано в одной из официальных хроник этого языка, эти версии компилятора, скорее, "доказывали теорему существования Ада-транслятора, соответствующего стандарту", чем были реально работающими инструментами. Но с тех пор прошло немало времени, и сегодняшние компиляторы уже мало напоминают тех неуклюжих, хотя и старательных работяг. Фактически, большая их часть, если верить заверениям разработчиков, имеют гораздо большую производительность, чем компиляторы C/C++ (хотя я вовсе не сторонник таких сравнений, особенно если сравниваются настолько разные языки).

Честно говоря, Аду нельзя назвать массовым языком программирования во многом из-за стоимости трансляторов языка. Впрочем, сказать точно, где здесь причина, а где следствие, нельзя. Стоимость инструментов для основной сферы применения Ады, встраиваемых систем, варьируется от нескольких тысяч до нескольких сотен тысяч долларов - естественно, всё зависит от количества программистов, работающих с компилятором. Правда, за эти деньги покупатель получает действительно замечательно отлаженный инструмент, очень надёжный и качественный. На самом деле, для такого языка, как Ада, такое положение вещей вполне приемлемо. Однако сейчас в мире наступила эпоха популярности свободного программного обеспечения, и Аду это тоже не минуло. Поэтому для Ады существует и бесплатный транслятор - GNAT, GNU Ada Translator.

Официальный сайт GNAT - www.adacore.com. Есть две версии GNAT - GNAT GPL и GNAT PRO. GPL-версия даёт право разрабатывать только бесплатное программное обеспечение, имеющее при этом ещё и открытый исходный код. А версия PRO даёт право уже и на коммерческое использование самой себя. Правда, при этом за её использование нужно платить. Деньгами. Цены на коммерческую версию можно найти на указанном выше сайте. Честно говоря, сам я точную цену не узнавал, потому что для моих нужд коммерческая версия пока не требуется, но хочу отметить, что ценовая политика довольно гибкая, поэтому можно с большой вероятностью найти устраивающее именно вас соотношение цены и функциональности.

GNAT - это компилятор Ады-95 для множества самых разных платформ. Впрочем, как это всегда бывает в нашем несовершенном мире, стандарт стандартом, а компилятор умеет больше, потому что разработчики включили в него частичную поддержку более нового стандарта Ада-2005. Думаю, в скором времени этот стандарт будет поддерживаться уже полностью.

Как я сказал, GNAT кросс-платформенен. Причём под словом "платформа" нужно понимать не только операционную систему, но и аппаратную часть, то есть процессорную архитектуру. GNAT имеет гораздо лучшую кросс-платформенность, чем даже GNU Compiler Collection (GCC), на коде которой он частично основан. Система GNAT позволяет вести разработку приложений для встраиваемых систем. Но можно разрабатывать и программы для "полноценных" платформ (например, той же PC - для самых разных операционных систем). Тем, кто желает изучить компилятор под одной из знакомых операционных систем, рад буду сообщить, что есть версия и для Windows, и для Linux - полагаю, большинство заинтересовавшихся будет развлекаться с компилятором именно под одной из этих систем.

Производительность GNAT аналогична производительности других компиляторов от GNU (того же GNU C/C++, к примеру). Кого интересует сравнение производительности разных компиляторов, могу посоветовать поискать результаты тестирования на сайте rsdn.ru, поскольку сам я не сторонник таких методов проверки компиляторов. Что касается скорости компиляции, то GNAT GPL собирал сам себя из исходных текстов, коих тогда было около 40 мегабайт, за двадцать семь минут на машине с 256 Мб оперативной памяти и с процессором Athlon с тактовой частотой 1800 МГц. Кстати, обратите внимание, что компилятор GNAT, несмотря на свою наполовину коммерческую природу, поставляется вместе с исходными текстами. Фактически, деньги, которые вы платите разработчикам, - это деньги на техническую поддержку.

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

Кстати, коммерческая версия GNAT PRO включает в себя не только компилятор. Имеется полноценная интегрированная среда разработки (есть и бесплатная версия, только она урезана и более старая), отладчик с графическим интерфейсом. В оба варианта компилятора (и PRO, и GPL) включено довольно большое количество примеров и, конечно же, стандартная runtime-библиотека Ады.

Однако GNAT - не единственный существующий сегодня компилятор Ады, доступный, так сказать, простым смертным. Второй из компиляторов, о котором я хочу сегодня рассказать, называется ObjectAda, а занимается его разработкой компания Aonix. В интернете ObjectAda можно найти, если воспользоваться следующей ссылкой: www.aonix.com/objectada.html.

Компилятор от Aonix коммерческий "от кончиков пальцев до кончиков волос". Правда, стоит он на общем фоне совсем недорого, от 600 евро. За эти деньги компания-производитель предлагает, впрочем, продукт с закрытым исходным кодом и ограниченную техническую поддержку. Ориентирована эта разработка тоже на системы, где безопасность и надёжность являются критическими факторами. Однако при этом если рассматривать разработку под платформу PC, то здесь у ObjectAda преимущества перед GNAT. Поскольку вместе с ObjectAda Aonix предлагает библиотеки для работы с такими технологиями, как ActiveX и COM под Windows, POSIX API для всех UNIX-подобных платформ. Причём для архитектуры процессора Intel x86 имеется специально оптимизированная под неё версия компилятора, которая имеется в вариантах под Windows и Linux. Есть лишь одно НО: ObjectAda - компилятор Ада-95, и перехода на Ада-2005 пока разработчики не планируют. Это не хорошо и не плохо, просто это очень важный фактор, который необходимо учитывать обязательно при выборе GNAT или ObjectAda.

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

Однако Aonix нужно сказать спасибо не только за качественный компилятор. Собственно, насколько он качественен, можно судить только со слов самой компании, а также по отзывам пользователей, по полученным этим программным продуктом сертификатам и по разработанным с его помощью проектам. К сожалению, скачать с сайта Aonix пробную версию компилятора не удастся. Впрочем, в этом нет ничего странного, это обычная практика для разработчиков серьёзных программных продуктов. Но ведь не за это я хочу сказать Aonix спасибо, не так ли? За что же?

А за то, что эта фирма создала замечательное средство, позволяющее разрабатывать программы на Аде с помощью великолепной свободной среды разработки Eclipse. И при этом можно использовать не только честно купленный транслятор ObjectAda, но и бесплатный GNAT GPL. А можно и GNAT PRO, конечно же. Eclipse, как известно, среда кросс-платформенная, поэтому можно будет даже использовать компилятор именно под той платформой, для которой ведётся разработка. Ну, а если нет, то есть такое замечательное средство, как кросс-компиляция (компиляция программ для одной платформы из-под другой).

Впрочем, для тех, кто всё же решится купить у Aonix их компилятор Ады, фирма готова предложить полностью заточенную под Аду среду разработки на основе всё того же Eclipse. Посмотреть воочию на это IDE тоже нельзя, к сожалению, но приблизительное представление о нём можно составить и по плагину для Eclipse, который Aonix выложила для свободного скачивания на своём сайте.

Конечно, GNAT и ObjectAda - не единственные инструменты, которые пригодятся при разработке программ на Аде. Однако эти системы включают в себя самые важные для программиста инструменты - компиляторы, среды разработки, отладчики и профилировщики. Эти современные средства позволяют использовать и современные технологии моделирования, и это опровергает ещё один миф об Аде. Ада не устарела. Этот миф происходит (как и другие, впрочем, мифы) от невежества человеческого. И не нужно ему верить. Ведь люди, работающие в сфере информационных технологий, должны лучше других понимать, что ценность информации увеличивается со степенью её достоверности. Мифы - информация недостоверная. Давайте будем верить фактам, которые говорят, что Ада жива и умирать пока не собирается.

(Продолжение следует)

Вадим СТАНКЕВИЧ

Версия для печатиВерсия для печати

Номер: 

47 за 2006 год

Рубрика: 

Software
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!

Комментарии

Страницы

Аватар пользователя Инкогнито
Станкевич, давайте без ликбеза обойдемся. не тот случай.

вы хотите сказать, что только на аде можно отказоустойчивую систему сделать? хе-хе. и даже гы.

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

Аватар пользователя Инкогнито
я понимаю - написали статью, рассказали о языке. есть такой. свои преимущества, свои недостатки. но упертость просто непрошибаемая. я вам одно - вы мне другое. трудно признаться? так не надо было говорить. за язык никто не тянул. или в очередной раз можно ляпнуть - вдруг не заметят? заметили.
Аватар пользователя Питон
> только на аде можно отказоустойчивую систему сделать?

Кто заявлял, что "только"? На Аде можно СРВ реализовать? Можно.

> вы даже сптсок реализованных проектов не дали. наверное, потому что их (достаточно серьезных) просто нет.

Список - на десяток постов выше. Если есть желание - докажите, что Ада в них не используется, или что они недостаточно серьезные. Вперед.

> остальное - пустая болтовня.

> но упертость просто непрошибаемая. я вам одно - вы мне другое.

5 баллов! Такой самокритики давно не встречал :)

ЗЫ Вадим, не тратьте время на доказательство чего-либо местным иксам. Все, что им нужно - почесать языком. Лучше статью напишите.

Аватар пользователя Вадим Станкевич
Инкогнито, Вы, наверное, военный. У меня кроме фамилии и имя есть, а Вы мне - Станкевич. Это не слишком вежливо.

И пожалуйста, скажите, что Вас не устраивает? Список проектов? В статье был проект - система для управления поездами метро. Для начала хватит?

>>остальное - пустая болтовня.

Вот именно. Вы просто не поняли, что сами спрашивали.

Аватар пользователя Инкогнито
>>можно ляпнуть - вдруг не заметят? заметили.

>>Вы, наверное, военный

Точное попадание, ведь это Настоящий полковник, ГЫЫЫ!!!

Аватар пользователя Инкогнито
что так засуетились?

Станкевич, вас по имени-отчеству величать? со всеми регалиями-званиями?

Питон, вы на аде пишете? что именно, позвольте полюбопытствовать?

метро, поезда? во второй части?

"Кстати, тема его диссертации была связана с метро, так что, как видите, применение программы, написанной на Аде, в парижском метрополитене не случайно. Напомню, что на одной из линий эта программа управляет составами вместо машинистов."

и машинистов там нет? ссылку, пожалуйста, на проект.

"Интересно, когда такие поезда появятся в Минске?"

поезда как в Париже, или система на аде?

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

Аватар пользователя mike
>Мне кажется, что разработки типа "своего языка" и/или реализации системы программирования серъезно продвигает человека и поднимает его профессиональный уровень

Несомненно. Ада впервые и концептуально по-своему реализовала взаимодействие распределённых компонент языковыми средствами. Коммерческое засилье мелкомягких и потребностей финансовых взаимоотношений направило программеров в др. русло, хотя Ада по-прежнему жива. Изучать её или нет - личное дело. Кстати, думаю, вряд ли америкосская система ПРО юзает уеб-технологии.

Аватар пользователя Инкогнито
mike, плохое представление о том, где может использоваться "уеб-технологии". гы.

http://www.osp.ru/pcworld/1997/08/157839/

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

вот это +5.

http://www.computer-museum.ru/histsoft/ada20.htm

"Разработка программ на языке Ада обходится на 60% дешевле аналогичных программных проектов, реализуемых на Си.

Программа на языке Ада имеет в 9 раз меньше дефектов, чем программа на Си; программа на Си++ имеет еще более низкие, чем программа Си, характеристики.

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

Трудоемкость изучения языка Ада не выше трудоемкости изучения Си.

Программы на Аде более надежны, чем программы на Си."

и никаких ответов - почем так.

Аватар пользователя Инкогнито
там же.

"Ада и Java

В Microsoft были вынуждены включить в лицензионные соглашения для своих операционных систем следующий пункт (www.microsoft.com/msdownload/ieplatform/ie/license.txt): "Замечание относительно поддержки языка Java... Технология Java не является устойчивой к сбоям и не предназначена... для использования в рамках управляющих систем реального времени..., в которых сбой языка Java может повлечь за собой смерть, увечье, или тяжелый урон инфраструктуре или окружающей среде. Компания Sun Microsystems, Inc. обязала компанию Microsoft разместить данное предупреждение"."

нашли на кого ссылаться - на microsoft. а sun пишет совсем другое. гы.

Аватар пользователя mike
>mike, плохое представление о том, где может использоваться "уеб-технологии"

Поясни.

>Мы не станем утверждать, что Ада - ...самый-самый...

И я не стану. Но в какие др. языки встроено рандеву?

>разработка программ на языке Ада обходится на 60% дешевле АНАЛОГИЧНЫХ программных проектов, реализуемых на Си.

Ключ - АНАЛОГИЧНЫХ. Обратное утверждение не верно, например, попробуйте на Аде выдернуть 5-ый бит порядка в числе с плавающей запятой.

>Программа на языке Ада имеет в 9 раз меньше дефектов, чем программа на Си

Может и не в 9, но ДО ОТЛАДКИ точно меньше.

>Трудоемкость изучения языка Ада не выше трудоемкости изучения Си.

Си легко осваивается теми, кто писал на Асме и имеет представление об АЛУ. Иначе проще изучить Аду.

>Программы на Аде более надежны, чем программы на Си

Думаю, да. Мне порой приходится исправлять ошибки 2х-3х-годичной давности от сдачи юзерам; ошибки, которые бы на Аде точно не сделал.

Страницы