Большинство из слышавших о языке Ада довольствуются шутками о его названии, часть из них знает историю его разработки, многие считают его бесполезным и давно забытым. Гораздо меньшее количество людей знает, что этот язык жив и здравствует. В декабре 2012 года вышел 900-страничный мануал-спецификация Ada Reference Manual, тем временем известный в кругах Ада Джон Барнс (John Barnes) опубликовал 6-ой черновик Ada 2012 Rationale, новая версия которого ожидается через пару месяцев. В финальной версии будет дан обзор особенностей Ada 2012 с примерами кода, описание изменений относительно предыдущих версий языка и совместимости.
Автор этого поста берется за перевод черновой рукописи, о результате сообщу дополнительно.
Ада и я
Я давно хотел познакомиться с Адой, однако друг другу нас никто не представил, да и времени было мало. Узнав о новом стандарте и столкнувшись с необходимостью выбора текста для перевода к диплому, решил убить двух зайцев. Здесь хочу кратко описать свой небольшой опыт взаимодействия с GNAT (GNU Ada compiler), надеюсь, эта информация окажется полезна и другим.
Разработка под GNU/Linux
Имея Raspberry Pi с установленной сборкой SqueezePlug в качестве домашнего веб- и медиа-сервера, захотелось использовать его же для экспериментов на языке Ада. Если GNAT отсутствует (как, например, у меня), установка не представляет сложностей:
$ apt-get install gnat
Далее создаем произвольную директорию и в ней файл с расширением ".adb". Продублирую содержание стандартного адского «Hello, World»:
with Ada.Text_IO;
procedure Hello is
begin
Ada.Text_IO.Put_Line("Hello, world!");
end Hello;
Для компиляции и сборки выполняется команда:
$ gnatmake yourSourceNameHere.adb
К сожалению, прелести новой Ады недоступны в данной сборке: версия GNAT, устанавливаемая из репозитория, не поддерживает последний стандарт. Так как с GNU/Linux я особенных отношений никогда не имел, решил не отвлекаться на сборку из исходников, оставить Raspberry Pi удел медиа-сервера и вернуться к Windows.
Разработка под Windows
Здесь есть несколько вариантов. Первый — использование GPS (GNAT Programming Studio). Эта IDE от AdaCore позволяет вести разработку и на других языках, или, по крайней мере, обеспечивает подсветку синтаксиса. По умолчанию установка производится в каталог C:GNAT2012. После запуска среды предлагается создать проект из шаблона, воспользоваться помощником или открыть существующую разработку. Далее все прозаично и не требует подробного описания: создание нового файла, сохранение его с расширением ".adb", добавление этого файла в Main Files (Project-Edit Project Properties), build, run. Что важно: для поддержки нового стандарта при компиляции следует добавить флаг "-gnat12".
Второй вариант — использование cygwin. При установке стоит отметить пункты, связанные с Адой, их можно найти по ключевым словам gnat, gcc, ada. Возможно, вам этого хватит для обеспечения работы GNAT, но мне компилятор настойчиво сообщал об ошибке:
$ gcc -c yourSourceNameHere.adb
$ gcc: error trying to exec 'gnat1': execvp: no such file or directory
Эта проблема решилась после установки GPS и выполнения следующей команды:
$ which gcc
/usr/bin/gcc
$ export PATH=/cygdrive/c/GNAT/2012/bin:$PATH
$ which gcc
/cygdrive/c/GNAT/2012/bin/gcc
Стоит отметить, что исполняемый файл «Hello, World» у меня весит около 500кБ, но это без указания каких-либо флагов. Если знать, как пользоваться флагами, подобная программа займет не более 20кБ.
Автор: idlhero