КулЛиб - Классная библиотека! Скачать книги бесплатно 

Леди Ада [Вадим Станкевич] (fb2) читать онлайн


 [Настройки текста]  [Cбросить фильтры]
  [Оглавление]

Вадим Станкевич ЛЕДИ АДА

Часть первая

Есть спросить у программиста, о каких языках программирования он когда-либо слышал, он задумается надолго. Потому что разных языков в двоичном мире великое множество. Многие из них можно уже полноправно считать мёртвыми (например, «компьютерную латынь» — АЛГОЛ, ставший прототипом Паскаля и множества других языков, но так и не сумевший выдержать конкуренции со стороны потомков). Многие языки находятся в процессе разработки, и ежегодно появляются десятки новых языков программирования и их диалектов.

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

Вполне вероятно, что во втором десятке списка языков, который программист составит после такого вопроса, окажется один не очень известный в нашей стране язык программирования, который, между тем, даст фору по многим параметрам почти всем популярным и известным языкам. Не думайте, что это утверждение голословно. Дочитайте, пожалуйста, статью до конца, прежде чем делать выводы.

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

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

В качестве «родителя» для Ады куратор проекта по разработке этого языка Жан Ишбиа выбрал Паскаль. В итоге язык получился очень строгим — более строгой типизации нет ни в одном другом языке программирования. А ещё благодаря этому тексты программ легко читаемы. Например, традиционный и любимый программистами «Hello, world!» на Аде выглядит следующим образом:


with Ada.Text_IO;

procedure Hello_World is

begin

 Ada.Text_IO.Line("Hello, world!");

end Hello_World;


К сожалению, обратная сторона медали — это многословность Ады. На стойких адептов C/C++ она действует, словно красная тряпка на быка. Однако стиль программирования, в который Ада деспотично «вгоняет» программиста, способствует резкому снижению времени, нужного для отладки программы. Благодаря строгой типизации, явному объявлению всех используемых переменных и модулей, мощному механизму обработки исключений Ада даёт возможность (можно даже сказать, навязывает) писать максимально надёжные программы. Нельзя сказать, что средства для работы с исключениями отсутствуют в С++, а Паскаль — язык с нестрогой типизацией. Однако почему-то Ада сокращает время отладки программ на 60 %, увеличивая при этом среднее время написания проекта всего лишь на 10 %. Думаю, посчитать чистую разницу несложно. А поскольку отладка C/C++-проектов нередко занимает до двух третей общего времени разработки, экономия получается существенная.

Традиционно Ада из-за большого числа синтаксических средств считается сложным для изучения языком. Однако и здесь всё не так просто, как кажется. Благодаря тому, что язык поддерживает очень многое (например, многопоточное программирование) прямо на языковом уровне, не приходится использовать и изучать сторонние библиотеки, работа с которыми может оказаться гораздо сложнее, чем использование стандартных синтаксических конструкций языка. В этом плане она коренным образом отличается от C/C++, где возможности самого языка по замыслу создателей минимизированы, а вся нужная функциональность отдана на откуп стандартной библиотеке функций и объектов. Это тоже не в последнюю очередь влияет на надёжность программ и удобство их тестирования. А вообще-то, лучше об этом скажет выдержка из статьи об опыте разработке проекта на Аде, опубликованной в журнале «Мир ПК» в августе 1997 года: «В качестве языка реализации компилятора ведущий программист выбрал Аду. <…> Не перечисляя всех причин, побудивших нас отказаться от использования Си, укажем главную: из-за своей „бедности“ Си вынуждает программиста придумывать различные трюки, что снижает надежность программ и повышает затраты на тестирование».

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

В Аде много интересных моментов. Например, я уже упоминал встроенную прямо в язык поддержку многопоточности разрабатываемых приложений. Даже, пожалуй, можно говорить о чём-то большем, чем о простой многопоточности/многозадачности. В языке реализована концепция «задач», которые могут выполняться независимо друг от друга, и, таким образом, их можно распределить не только на разные потоки в рамках одного приложения, но даже на разные процессы, и, таким образом, средствами самого языка создать распределённую систему. Конечно, язык предоставляет средства, позволяющие задачам эффективно взаимодействовать и обмениваться информацией. Пожалуй, это одна из самых мощных возможностей, встроенных создателями Ады в своё детище.

Ещё один интересный, чисто языковой момент — реализация раздельной компиляции в Аде. Основана она на идеологии так называемых «пакетов», которые похожи на unit'ы из Паскаля. Только здесь пакет разделяется на два файла: в одном описывается спецификация реализованных в пакете объектов и функций (они, кстати, в Аде называются процедурами, независимо от того, возвращают ли они какое-либо значение или же нет), а во втором находится непосредственно реализация. Вот так изящно авторы языка решили извечную проблему Паскале-подобных языков, в которых размер текста модулей часто становился головной болью для программистов.

В отличие от классического Паскаля (и от того, который придумал Никлаус Вирт, и от того, который создала компания Борланд), Ада обладает некоторым подобием препроцессора. Это встроенная в язык возможность переименовывать определённые в программе определения (то есть, любые определения, не являющиеся встроенными в язык ключевыми словами). Для этого используется ключевое слово renames. Например, переименование переменной объектного типа (а в терминологии Ады объекты называются компонентами) выглядит следующим образом:


Record_Count: renames Ada.Text_IO.Count;


При переименовании в программе можно использовать как оригинальное имя переменной, так и новое, данное ей при переименовании.

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

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

Где же востребована Ада со всеми своими уникальными возможностями? Где используется этот великолепный язык, о котором, впрочем, мало кто даже подозревает? Основное «место работы» этого языка программирования — различные встраиваемые системы. Например, уже упомянутая система для автоматического управления поездами Парижского метро. Ещё Ада очень активно используется во всяких военных разработках (собственно, именно для этого она и создавалась). Впрочем, никто не мешает писать на Аде программы для ПК. Необходимые для этого инструменты имеются.

Одна из особенностей Ады — то, что этот язык динамично развивается, впитывая в себя передовые идеи и обеспечивая поддержку современных технологий программирования. Последняя на сегодняшний день версия стандарта этого языка программирования принята в 2005 году. Кстати, стандартизация в Аде довольно строгая — все существующие компиляторы языка должны поддерживать одну из трёх версий: Ада 2005, Ада 95 или Ада 83. Сейчас самой распространённой версией спецификации Ады является Ада 95.

Что интересно, стандартизован не только сам язык, но и стандартная runtime-библиотека. Кто-то скажет, что и STL из C++ стандартизован. Однако нужно вспомнить, каково количество разных версий STL, и принять во внимание тот факт, что с каждым компилятором идёт своя версия этой библиотеки, со своими особенностями.

В связи со всем вышесказанным возникает один-единственный вопрос. Почему Ада имеет такую малую популярность? На самом деле, вопрос коварный. Ада популярна, но в определённом кругу — среди разработчиков встраиваемых систем. Тот факт, что она не слишком известна широкой общественности, на мой взгляд, объясняется тем, что она не слишком раскручена на рынке. Просто этот сегмент рынка программного обеспечения довольно статичен и редко бывает на виду.

Часть вторая

Сегодня мы с вами продолжим разговор об одном замечательном языке программирования, имя которому — Ада. Я искренне надеюсь, что первая часть статьи позволила получить вам представление об этом замечательном языке программирования. Во второй же части мы обратимся к истории. Потому что история создания языка Ада заслуживает отдельной статьи, и, думаю, прочитав её, вы со мной согласитесь. Кроме того, отдельного рассказа заслуживает и история жизни той женщины, в честь которой назван этот язык. Я думаю, нельзя говорить об этом языке дальше, не рассказав о таких вещах. Поэтому, хотя сегодняшний материал редактор и отнесёт наверняка по привычке к рубрике «Software», эта статья будет не совсем о программах…

Итак, с чего же начать? Я лично считаю, что лучше долгое вступление, чем долгая концовка. Поэтому начнём издалека, как водится…

Как известно, в Китае живут китайцы, и император у них тоже китаец. Не хотелось начинать статью с плагиата, вот я и поставил эту фразу в середину. Не узнали? Это великий датский сказочник Андерсен. Перефразируя эти слова, можно сказать так: в США живут американцы, и президент у них тоже американец. А военное министерство у американцев именуется Пентагоном. И случилось так, что Пентагон, внимательно следящий за новыми технологиями, стал оснащать своё вооружение микропроцессорами. Здесь термин «вооружение» нужно понимать в широком смысле: спутники, радары, системы слежения и ПВО — это тоже вооружение.

Для микропроцессоров нужны программы; сами по себе они работать не умеют, то ли к сожалению, то ли к счастью. А для написания программ нужны люди. И люди склонны делать ошибки. А одна ошибка в программе, управляющей ядерной боеголовкой — и всё, полпланеты нету… Конечно, пример несколько утрирован, но общая ситуация, тем не менее, полагаю, понятна. Поэтому программное обеспечение, внедряемое в систему вооружения, должно быть сверхнадёжным. Надёжности можно добиваться разным способом. В Пентагоне решили пойти по пути создания языка программирования, «заточенного» под написание очень надёжных программ. Была и ещё одна причина для создания единого для всего Пентагона языка: использование одного такого языка вместо почти полутысячи разных языков и диалектов могло бы сэкономить казне около миллиарда вечнозелёных в год. Скорее всего, именно это и стало решающим моментом в вопросе разработки нового языка.

В 1977 году был организован международный конкурс на создание нового языка. Что любопытно, в качестве основы для нового языка можно было брать языки из очень ограниченного списка: PL/1, Algol-68 и Pascal. Эти языки специалисты Пентагона посчитали наиболее подходящей базой для создания надёжного языка программирования. Конкурс получил живой отклик в научной среде: более десятка групп разработчиков из самых разных стран представили свои работы, из которых в 1979 в итоге был выбран один проект, созданный группой специалистов, которой руководил француз Жан Ихбиа.

Личность самого этого французского учёного тоже довольно интересна. Ада была не первым языком программирования, разработанным под его руководством. Сам он, кстати, по образованию не был программистом. Ихбиа окончил парижскую политехническую школу, после которой продолжил обучение по специальности в США. Кстати, тема его диссертации была связана с метро, так что, как видите, применение программы, написанной на Аде, в парижском метрополитене не случайно. Напомню, что на одной из линий эта программа управляет составами вместо машинистов. Интересно, когда такие поезда появятся в Минске?

Кто именно придумал название для языка, история умалчивает. Возможно, это сделал сам Жан Ихбиа. Возможно, кто-то из Пентагона. Возможно, кто-то из группы разработчиков, работавших вместе с Ихбиа. Одно лишь известно: человеком, в честь которого назван этот язык программирования, является леди Ада Августа Лавлейс. И о ней — оставшаяся часть статьи.

Английский поэт лорд Байрон был когда-то женат. И имел в браке единственного законнорожденного ребёнка. Дочь Джорджа Гордона Байрона и его жены Анны Изабеллы Байрон, родившаяся в 1815 году, была названа Августой, а её полное имя было Ада Августа. Впрочем, после развода родителей, наступившего в скором времени после рождения ребёнка, в семье матери, в которой осталась дочь великого поэта, старались как можно реже употреблять имя, данное отцом, которого, кстати, девочка видела всего лишь раз в жизни, через месяц после своего рождения. Под именем Ада знали её все друзья и знакомые, под этим именем она вошла и в историю.



Математический талант Ады проявился сравнительно рано, и по этой причине мать решила пригласить для неё учителя — человека, который учил когда-то и её саму. К слову, у Анны Изабеллы тоже были ярко выраженные математические способности, за которые близкие называли её «Королевой параллелограммов». Однако впоследствии Ада больше сдружилась с женой своего учителя, чем с ним самим — к счастью, та тоже великолепно разбиралась в математике.

В семнадцать лет (а, как говорят англичане, seventeen is the age when the girl ends and woman begins[1]) в жизни Ады случилось знаменательное событие. Думаю, любой из нас в любом возрасте мог бы посчитать такое событие в своей жизни весьма значительным. В этом возрасте мать стала вывозить Аду в свет и представила её королю и королеве. А ещё в том же году девушка была представлена Чарльзу Бэббиджу, одному из виднейших математиков того времени. На тот момент Бэббидж был не слишком известен в широких кругах, но уже достиг определённых высот: он был профессором кафедры математики в Кембриджском университете. Кстати, за полтора столетия до него этой кафедрой руководил Исаак Ньютон.

За десять лет до знакомства с Адой Байрон Бэббидж создал чертёж вычислительной машины, способной (теоретически) выполнять различные вычисления с точностью до двадцатого знака. Конечно, эта машина сильно отличалась от тех приборов, которые мы называем вычислительными машинами сегодня. Она была механической, состояла из бесчисленного количества шестерёнок и винтиков. Однако по своей сути и по своему предназначению она была прообразом современных «думающих» машин, именуемых компьютерами. Этот проект чрезвычайно заинтересовал тогдашнего премьер-министра Соединённого Королевства, и Бэббидж получил субсидию на постройку своей машины. Впрочем, за десять лет Бэббиджу так и не удалось создать работающий вариант машины, поэтому по истечении этого периода времени финансирование было прекращено. Тем не менее, именно аналитическая машина Бэббиджа сделала известными имена Чарльза и Ады.

В 1842 году итальянец Манибера заинтересовался изобретением Бэббиджа настолько, что выпустил подробное описание принципов работы и конструкции аналитической машины. Однако описание было опубликовано на итальянском, и Бэббидж попросил Аду перевести его на английский язык. Талантливая женщина-математик, успевшая к тому времени уже выйти замуж за графа Лавлейса и родить ему троих детей, с радостью взялась за этот нелёгкий труд. Подойдя к процессу творчески, она ещё и снабдила перевод собственными комментариями. Собственного говоря, именно они и позволяют сегодня говорить о том, что Ада Августа Лавлейс была первым программистом планеты. В своих комментариях Ада представила план операций (в современных терминах это, пожалуй, будет звучать как алгоритм) для аналитической машины, позволяющий решать уравнение Бернулли для движения жидкости.

Что интересно, Ада Августа Лавлейс и Чарльз Бэббидж внесли свой вклад не только в идеологию, но и в терминологию кибернетики и компьютерного программирования. Они первыми ввели такие понятия, как подпрограмма и библиотека программ, модификация команд, индексный регистр, рабочая ячейка и цикл. При этом нужно отметить, что перевод описания аналитической машины и комментарии к нему — не единственные работы Лавлейс, выполненные ею под руководством Чарльза Бэббиджа. Однако в те годы для женщины считалось неприличным издавать собственные научные работы, поэтому они долгое время пребывали в безвестности.

Что также любопытно, муж, Уильям Кинг Лавлейс, и дети с пониманием относились к тому, что Ада занимается математикой, и потому замужество не то что не помешало, но даже некоторым образом и помогло Аде, так как теперь к её услугам была обширная родовая казна Лавлейсов. Бэббидж же, будучи профессором, познакомил её со многими другими выдающимися людьми той эпохи: Майклом Фарадеем, Дэвидом Брюстером, Чарльзом Уитстоном, Чарльзом Диккенсом.

К сожалению, линия жизни Ады Августы Лавлейс прервалась сравнительно рано. В 1852 году она умерла от рака матки, и была похоронена в фамильном склепе рядом со своим отцом, Джорджем Гордоном Байроном.

Такова история языка Ада и история женщины, в честь которой этот язык был назван. Вряд ли тот человек, который подбирал название для языка, мог придумать более подходящее и запоминающееся название. Кстати, память о первом программисте (по иронии судьбы, для этой «чисто мужской», как не один раз приходилось слышать, профессии первым её представителем стала женщина) увековечена не только в названии языка программирования. Десятого декабря, в день, когда родилась Ада Августа Лавлейс, отмечается Всемирный день программиста.

Часть третья

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

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

Первые версии компилятора были не слишком удачными. Как сказано в одной из официальных хроник этого языка, эти версии компилятора, скорее, «доказывали теорему существования Ада-транслятора, соответствующего стандарту», чем были реально работающими инструментами. Но с тех пор прошло немало времени, и сегодняшние компиляторы уже мало напоминают тех неуклюжих, хотя и старательных работяг. Фактически, большая их часть, если верить заверениям разработчиков, имеют гораздо большую производительность, чем компиляторы 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 — не единственные инструменты, которые пригодятся при разработке программ на Аде. Однако эти системы включают в себя самые важные для программиста инструменты — компиляторы, среды разработки, отладчики и профилировщики. Эти современные средства позволяют использовать и современные технологии моделирования, и это опровергает ещё один миф об Аде. Ада не устарела. Этот миф происходит (как и другие, впрочем, мифы) от невежества человеческого. И не нужно ему верить. Ведь люди, работающие в сфере информационных технологий, должны лучше других понимать, что ценность информации увеличивается со степенью её достоверности. Мифы — информация недостоверная. Давайте будем верить фактам, которые говорят, что Ада жива и умирать пока не собирается.

Часть четвёртая

Вот и четвёртая часть статьи об Аде…

Эта часть будет финальным аккордом нашего с вами разговора про этот замечательный язык программирования. И в ней мы с вами сейчас обговорим то, что ещё не успели в предыдущих частях. Однако сначала небольшое, так сказать, лирическое отступление.

Многие сетовали на то, что в «сериале про Аду» отсутствовали примеры. То есть, не было кода программ на Аде. Откровенно говоря, я не просто не вижу необходимости включения примеров кода на Аде в статью. Потому что статья носит обзорный характер и никоим образом не ставит целью заменить собой учебники по данному языку программирования (а все четыре части — это, по сути дела, одна статья, только разбитая на несколько газетных номеров). Поэтому примеры лучше искать в книгах или во Всемирной паутине, а не на страницах «Компьютерных Вестей».

Итак, вернёмся к нашей Аде. В прошлой части я рассказал вам немного о самом популярном из компиляторов этого языка — GNU Ada Translator, или просто GNAT. И упомянул, что существует бесплатная среда разработки для него. Нет, сейчас я имею в виду не то IDE, которое разработала компания Aonix на основе Eclipse. Эта среда разработки функционирует совершенно автономно от Eclipse и именуется GNAT Programming Studio — GPS.

GNAT Programming Studio, вообще говоря, не является свободной программой, как и сам GNAT. То есть денег стоит его профессиональная версия, но есть и такая, которую можно использовать бесплатно — естественно, только в некоммерческих целях. Найти академическую (бесплатную) версию, а также информацию о профессиональной версии можно на том же сайте, на котором представлен компилятор GNAT — www.adacore.com.

Обе версии GPS работают на множестве самых разнообразных платформ. Среди них HP/UX, MacOS Darwin, Solaris, Linux, Windows. Есть версии для разных процессорных архитектур: Intel x86, PowerPC, Sparc, Intel 64. Это замечательно, но, конечно же, все платформы, которые поддерживаются компилятором, среда разработки охватить просто не в состоянии. Тем не менее, под теми системами, под которыми есть качественная графическая оболочка, позволяющая воспользоваться всеми преимуществами GPS, среда разработки, как видите, умеет работать. Могу лично подтвердить, что она безукоризненно работает под Windows.

Надо сказать, что GPS — вполне современная среда программирования, что лишний раз опровергает миф о том, что Ада — язык устаревший. Для устаревших языков и среды разработки соответствующие. Помимо непосредственной подсветки синтаксиса языка, среда умеет выполнять фолдинг (сворачивание и разворачивание) участков программного кода, показывает подсказки, помогающие в наборе параметров процедур. В среде имеется довольно удобный и функциональный менеджер проектов, который позволяет осуществлять навигацию по проектам, содержащим большое количество файлов с исходными текстами. Собственно, как замечают разработчики, GNAT и GPS тестировались на больших проектах, поэтому их использование в таких проектах вполне целесообразно. Ко всем прочим своим плюсам, GPS умеет взаимодействовать с системой контроля версий (CVS), что также упрощает работу программистов над большими проектами. Честно говоря, вряд ли без этой возможности можно было бы серьёзно рассуждать о работе с большими проектами в среде GPS. В качестве отладчика среда использует GNU Debugger, правда, несколько переработанный. В бесплатной версии имеется GNU Visual Debugger, который можно использовать отдельно от среды GNAT Programming Studio. В коммерческой версии возможности отладчика шире, однако подробности разработчики не раскрывают.

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

Как я уже говорил, Ада — язык объектно-ориентированный. И объектная концепция его такова, что идеально подходит для использования Ады под платформой Microsoft.NET. Свято место, как известно, пусто не бывает, и Ада для. NET — не выдумка, а реальность. Проект, реализующий компилятор Ады для платформы. NET и некоторые дополнительные инструменты для программирования на Аде под этой платформой, называется A# и располагается по адресу asharp.martincarlisle.com.

A# — это полноценный. NET компилятор, который выдаёт код, совместимый с Microsoft.NET Framework 2.0. Соответственно, можно использовать все классы из Framework, в том числе и библиотеку Windows Forms, так что теперь на Аде можно создавать даже полноценные приложения с графическим пользовательским интерфейсом. Правда, возникает вопрос, насколько разумно использовать Аду в таких приложениях, если тут уже, собственно, надёжность разработанного приложения зависит не только от компилятора и коллектива программистов, разрабатывающих программу, но и от платформы в равной степени. Платформа, как дополнительный уровень абстракции, добавляет свои вероятности ошибок, и с этим ничего не поделаешь. Поэтому A# не кажется серьёзной разработкой. Хотя он прекрасно подходит для изучения самого языка.

Чем ещё может A# привлечь потенциального пользователя? Собственно, всё тем же — интеграцией с. NET. И, более того, с самой популярной средой разработки для этой платформы — Microsoft Visual Studio.NET 2005. Эта среда разработки, пожалуй, удобнее GPS и даже Eclipse, а самое большое её преимущество — она привычна и знакома большинству программистов, разрабатывающих программное обеспечение для платформы. NET. Впрочем, как я уже говорил, Ада — далеко не самый популярный язык для разработки под эту платформу.

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

Первый пункт в списке средств для тестирования — это программа для проверки исходного кода проекта под названием GNAT Checker (www.kolumbus.fi/vitali.kaufman/gch). Правда, поставляется она в виде исходных текстов, но скомпилировать её — дело нескольких минут. Она выполняет проверку исходных текстов на наличие различных алгоритмических ошибок и «ляпов». Вторая интересная и полезная программа — tg (www.free-software-consulting.com/projects/tg). Это не тангенс, а test generator. То есть генератор тестов — пояснение для тех, кто не знает английского. Он генерирует процедуру, которая автоматически «прогоняет» различные значения переменных в программе и тестирует её, таким образом, на устойчивость. В общем-то, не буду останавливаться более подробно на этих и других средствах, поскольку, очевидно, эти и другие решения вполне охватывают все потребности разработчиков, возникающих при написании программ на языке Ада.

Что ж, на этой мажорной ноте рассказ об Аде, пожалуй, закончим. Эта часть статьи будет последней, поскольку для обзорной статьи этого более чем достаточно, а углубляться — это уже не для газетной статьи, а для солидных книг. Которых, кстати, по Аде написано не так уж и мало. Конечно, не так много, как по C/C++, но и не так мало, как, например, по тому же Smalltalk. Для тех, кто заинтересовался этим языком программирования, могу порекомендовать совершенно замечательный сайт www.ada-ru.org. Это сайт русскоязычного сообщества программистов на Аде. Там можно найти учебники, библиотеки, компиляторы и различные дополнительные средства (в том числе и упомянутые выше инструменты для тестирования приложений, написанных на языке Ада). Очень рекомендую ознакомиться хотя бы поверхностно: можно найти много весьма любопытных вещей. Например, операционную систему MARTE OS (официальный сайт — marte.unican.es). Я уже говорил, что Ада — второй после Си высокоуровневый язык, официально сертифицированный для написания операционных систем? Если да, то простите за повторение…

Если же заинтересуют англоязычные ресурсы, обратитесь к сайту www.adahome.com.

Конечно, Ада — не идеальный язык программирования. В этом мире нет ничего идеального. И языки программирования — не самое худшее из того, что может своей идеальностью испортить жизнь…

Никлаус Вирт, создатель языков Паскаль, Оберон, Модула, Эйфель когда-то сказал про Аду: «Слишком много всего вываливается на программиста. Я не думаю, что, изучив треть Ады, можно нормально работать. Если вы не освоите всех деталей языка, то в дальнейшем можете споткнуться на них, и это приведет к неприятным последствиям». У каждой медали своя сторона. Ада интересна во многом своей необычностью, нетривиальным подходом ко многим вопросам. И, коль скоро язык этот существует уже много-много лет, и уходить с рынка пока не собирается, значит, этот подход имеет право на жизнь. И, может быть, создание отказоустойчивых систем сейчас не самая востребованная работа, но всё же полезно иметь представление о языке, с помощью которого такие системы создаются. Надеюсь, я сумел сообщить вам что-то новое и заинтересовать Адой так же, как когда-то этим языком заинтересовался сам.

Примечания

1

Seventeen is the age when the girl ends and woman begins — Семнадцать лет — возраст, в котором оканчивается девочка и начинается женщина (англ.). Можно было бы сказать то же самое по-русски и красивее, но дословный перевод именно такой.

(обратно)

Оглавление

  • Часть первая
  • Часть вторая
  • Часть третья
  • Часть четвёртая
  • *** Примечания ***