Леди Ада

Часть третья

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

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

Первые версии компилятора были не слишком удачными. Как сказано в одной из официальных хроник этого языка, эти версии компилятора, скорее, "доказывали теорему существования Ада-транслятора, соответствующего стандарту", чем были реально работающими инструментами. Но с тех пор прошло немало времени, и сегодняшние компиляторы уже мало напоминают тех неуклюжих, хотя и старательных работяг. Фактически, большая их часть, если верить заверениям разработчиков, имеют гораздо большую производительность, чем компиляторы 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!

Комментарии

Страницы

Аватар пользователя mike
На кое-что иксу, по стилю, подозреваю - Полковнику, отвечу, но дальше общаться не хочу, т.к. толку - NULL.

1. Общемзвестно, что внутри приложения, особенно, если оно РВ, может быть много задач, причём ОС может быть и ...однозадачной. Многозадачность, не универсальная, конечно, в таких случаях возлагается на само приложение. ИМХО Ада была призвана упростить работу девелоперам именно таких систем.

2. Всовывание в Cи ассемблера и интерфейс между ними - разные вещи. Это известно всем, кто на Асме писал функции которые бы после трансляции с асма линковались с оттранслированными Си-функциями.

3. Любые принудительные отвлечения (в т.ч. и т/ф) программиста от проекта - источник ошибок.

4. Я не крут, про Optima++, Power++ ничего не знаю, пишу на Си++, юзаю "визуал" и "билдер", для МК юзаю Си и асм.

5. За сим из прений выхожу, всем удачи.

Аватар пользователя Инкогнито
null использовать - чревато. половина кода одних проверок на null. гы. спецЫЯлист.

точно толку - null.

Аватар пользователя Инкогнито
так с адой закончили совсем? всем все ясно? гы.
Аватар пользователя TimKruz

Инкогнито - человек-с-баттхертом или просто скучающий тролль...

Страницы