Эта статья призвана помочь тем из Вас, кто решил по тем или иным причинам изучить данный замечательный язык. Автор сам использует в качестве десктопа а также в качестве рабочей среды Linux ASP 10, отсюда и название статьи и некоторый уклон именно на этот дистрибутив. Однако компиляторы с языка Ада реализованны под очень большое число различных операционных систем. Самым примечательным из них является система компилятора - GNAT основанная на технологии GCC, распространяемая на условиях лицензии GNU (оттого и примечательный). Про него и будем говорить.
Я не буду рассказывать об истории этого языка, отраслях применения и о существующих компиляторах. Информации в сети об этом предостаточно. Итак, в состав ASP 10 входит собственная сборка GNAT. Поищите на установочных дисках пакеты:
gcc-gnat-3.3.3-7asp.i386.rpm
libgnat-3.3.3-7asp.i386.rpm
После установки открываем терминал и смотрим:
$ gnat
GNAT 3.3.3 20040412 (ASPLinux 3.3.3-7) Copyright 1996-2002 Free Software Foundation, Inc.
...
Довольно старая версия и для сборки серьезных проектов категорически не подходит, поскольку слишком много Bug Report's может повыскакивать. Но для изучения этого вполне хватит.
Если Вас это не устраивает, можете скачать последнюю на момент написания статьи версию - это GNAT GPL 2005, который поддерживает некоторые нововведения из стандарта ADA2005. Замечу, что основным применяемым стандартом на данный момент является ADA95.
Скачать можно с официального сайта: https://libre2.adacore.com/
Но учтите, что эта версия налагает запрет на разработку программ под лицензией, отличной от GPL. Там же есть версия для учебных организаций и версия для разработки коммерческих программ (GNAT Pro).
Поскольку на этом сайте нет поддержки дозагрузки, логичнее будет отправиться на зеркало:
ftp://ftp.mipt.ru/ada/gnat.gpl
По умолчанию все устанавливается в директорию /usr/gnat где и разворачивается вся структура, так что не забудьте включить путь /usr/gnat/bin в переменную PATH (перед /usr/bin. Здесь правда могут возникнуть проблемы с многоверсионностью gcc, так что будьте внимательны, например, при сборке какого-нибудь модуля ядра - здесь должен использоваться родной gcc).
Итак, Вы установили GNAT, и мне остаеться только рассказать в кратце о том, как им пользоваться.
Но для начала немного об IDE. Под Windows я знавал редактор AdaGide, который к сожалению под Wine так и не смог запустить.
Поддержку подсветки синтаксиса Ада включают большинство стандартных текстовых редакторов: Gvim, Kate, XEmax. Можно использовать KDevelop. Есть еще GPS, который без проблем можно найти в сети и который уже включен в стандартный пакет поставки ADA GPL 2005. Про другие ничего хорошего сказать не могу.
--
Пример минимальной программы:
$ cat > ex.adb procedure Ex is begin null; end Ex; Ctrl-C
$ cat > logic.ads package Logic is function Write (S : in String) return Integer; private Count : Integer := 0; end Logic; Ctrl-C $ cat > logic.adb with Ada.Text_IO; use Ada.Text_IO; package body Logic is function Write (S : in String) return Integer is begin Put_Line(S); Count := Count + 1; return Count; end Write; end Logic; Ctrl-C
[subj@localhost new]$ cat > hello.adb with Logic; procedure Hello is c : Integer; begin c := Logic.Write("Hello, world!"); for i in 1..10 loop c := Logic.Write(c'Img); end loop; c := Logic.Write(c'Img & " End!"); end Hello; Ctrl-C
$ gcc -c logic.adb
$ gcc -c hello.adb
Связывание:
$ gnatbind -shared hello.ali
(заместо -shared можно использовать -static)
Линковка:
$ gnatlink -s hello.ali
( s - Strip, необязательно)
Дабы облегчить сборку лучше пользоваться утилитой gnatmake, которая автоматически выполняет показанные выше операции. Чтобы раскидать параметры по утилитам, которые будут вызванны, используют:
для gcc : -cargs ... (можно не указывать)
gnatbind: -bargs ...
gnatlink: -largs ...
В простейшем случае можно написать:
$ gnatmake hello.adb
С использованием ручного указания нужных параметров (к опциям gcc добавим -O2, а -shared заменим на -static):
$ gnatmake -O2 hello -bargs -static -largs -s
gcc -c -O2 hello.adb
gcc -c -O2 logic.adb
gnatbind -aO./ -static -I- -x hello.ali
gnatlink -s hello.ali
Запускаем:
$ ./hello
Hello, world!
1
2
...
10
11 End!
Ну и напоследок введите gnatmake без всего для получения более подробной информации по различным опциям; и gnat без всего для получения листинга доступных утилит.
P.S.: Как я уже сказал ранее, в сети можно найти довольно много различной информации, касающейся этого языка, но я бы посоветовал в качестве отправной точки посетить русскоязычный ресурс: http://ada-ru.org/ (найдите там книгу А.Гаввы "Адское программирование". Лучшего учебника я не знаю).
(c) by Subj {subj@bk.ru}. 02.04.2006. Thank's ...
Комментарии
Re: Ада и ASPLinux 10 #1
А это только у меня одного такие мракозябры с html тэгами?