В книгах по программированию, содержащих краткий обзор существующих языков, как правило, можно обнаружить примерно такие характеристики: Паскаль - язык для обучения, Си - язык профессионалов (Unix, Windows и т.д.), Ада - очень большой, сложный язык, разработанный по заказу Министерства обороны США. Мы не собираемся оспаривать это или доказывать, что Ада лучше, чем, например, Си (для этого есть конференции в Internet), а просто расскажем об опыте использования этого языка при реализации одного проекта.

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

Команда разработчиков JAM была разбита на две группы: программисты (ведущий и два основных) и тестировщики (помощник ведущего и одновременно главный тестировщик, а также тестировщик-библиотекарь, в чьем ведении находились архивные копии, листинги, версии и т. д.). Все участники проекта свободно владели языком Си (освоенным в институте); ведущий, кроме того, знал Паскаль.

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

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

Вопрос с обучением решился довольно просто: с сервера SimTel (oak.oakland.edu) была переписана интерактивная программа по обучению языку Ада, которая вкупе с очень хорошей книгой О.Н. Перминова2 составила базу для первоначального обучения языку. Уровень знаний, на который вывел участников проекта интерактивный курс, оказался достаточным, чтобы начать работу. Далее мы уже осваивали язык в основном опытным путем, пользуясь книгой в качестве справочного пособия.

Кроме того, нам очень пригодился переписанный с того же сервера SimTel электронный справочник по стандарту Ада-9X. Дело в том, что Ада - развивающийся язык, и недавно был принят его новый стандарт Ада-9X, а те книги, которые имеются в нашей стране, в основном описывают стандарт Ада-83, что, естественно, неудобно. Процесс обучения занял месяц, так что распространенное представление о сложности языка явно не соответствует реальности. Да, Ада - язык многословный даже по сравнению с Паскалем, но отнюдь не громоздкий, как кажется многим поначалу. К моменту окончания работы над проектом все конструкции языка оказались задействованы в исходных текстах. Тут хотелось бы отметить логичность, стройность и последовательность конструкций, благодаря чему многословность языка не затрудняет усвоения (даже при посредственном знании английского).

Вопрос о выборе компилятора - следующий по трудности после вопроса о выборе языка. В жизни, как это ни печально, программист часто заранее решает, что он (его группа) будет использовать пакет Borland C, Borland Pascal, Watcom C++ и т. п., после чего выбирать язык уже не приходится. Когда же процесс идет в более естественном...

Это не вся статья. Полная версия доступна только подписчикам журнала. Пожалуйста, авторизуйтесь либо оформите подписку.