Леди Ада [Вадим Станкевич] (fb2) читать постранично, страница - 2


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

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

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

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

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


Record_Count: renames Ada.Text_IO.Count;


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

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

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

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

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

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

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

Часть вторая

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