Как начинался компьютер
Компьютерная революция
Двоичный код
Разработки военных лет
Интегральные микросхемы
Микрокомпьютер
Персоны
Сеть
Язык компьютера
Развитие ПО
Гибкие системы
Средства разработки
Информатика
Вычислительная наука
Операционные системы
Искусственный интеллект
Предыстория
Поиск
Знания и рассуждения
Логика
Робототехника
 

 
Язык Ада Печать
Системы управления авиационным движением, а позднее космическими спутниками и другие, подобные им, требовали таких больших программ, что на их разработку уходили годы, причем писались они по частям разными группами программистов, и никто в точности не представлял, как эти части будут стыковаться друг с другом.

Слишком часто в результате таких работ появлялись программные системы, стоившие миллионы долларов, созданные с опозданием на многие месяцы и содержащие тысячи ошибок.

Проблема приобретала серьезный характер, вырастая поистине в «кризис программного обеспечения». Нигде кризис не переживался столь остро, как в военном ведомстве США, самом крупном потребителе компьютеров и программ.

В 1973 г., когда руководство Пентагона начало уделять серьезное внимание этой проблеме, оно выделило около половины из 7,5 млрд. долл. своего компьютерного бюджета на развитие и сопровождение программного обеспечения. Ассигнование на аппаратное обеспечение компьютеров, напротив, было уменьшено, несмотря на значительное увеличение мощности и памяти компьютеров.

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

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

В значительной мере проблема порождалась невероятной мешаниной языков, на которых писались про граммы для встроенных систем. Как следует из обзоров, в начале 70-х годов существовало не менее 450 языков высокого уровня И их диалектов, используемых для кодирования таких программ. (Если же учесть языки ассемблера, то эта цифра доходила до 1,5 тыс.)

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

Одним из результатов столь бурного размножения языков в военном программировании было повсеместное дублирование работ. Каждый род войск имел собственные «любимые» языки, не совместимые с языками, используемыми в других родах войск.

Например, программы, написанные на языке, принятом в ВВС США, должны были полностью переписываться при использовании их в сухопутных войсках или на флоте.

Эта проблема и связанная с ней проблема обучения программистов нескольким языкам, а также необходимость разработки различных компьютеров для разных применений вели к бешеному росту расходов.

В январе 1975 г. Пентагон вознамерился навести порядок в сем «лингвистическом хаосе». Он учредил большой комитет HOLWG (от High Order Language Working Group) - рабочую группу по языку высокого уровня, в которую входили представители всех родов войск США, а также трех союзников США по НАТО (Франции, Германии и Великобритании).

Комитету было предписано найти или разработать языки (желательно один), пригодные для программирования всех известных встроенных систем.

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

Тем не менее Уайтекер остался в ВВС и за 16 лет работы над ядерным оружием на Кертлэндской базе ВВС возле Лос-Аламоса (шт. Нью-Мексико), стал высококвалифицированным программистом.

К тому моменту, когда он занял пост научного руководителя лаборатории вооружений ВВС США, «на его счету» было 30 тыс. часов процессорного времени.

За этот период Уайтекер на собственном опыте прочувствовал проблему языковой несовместимости, особенно хорошо запомнив одну программу, которую из-за изменений модели компьютера приходилось переписывать пять раз.

Хотя комитет HOLWG не должен был разрабатывать единственный универсальный язык, Уайтекер с самого начала имел в виду именно это. «Он верил, как никто другой, что нужен единственный универсальный язык, вспоминал один из свидетелей этой работы, - и добился своего».

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

Их попросили помочь в формулировке необходимых требований к универсальному языку. Задача выработки проекта общих спецификаций была возложена на Дэвида Фишера - гражданского сотрудника из Института оборонных исследований США.

Фишер привнес в эту работу собственный солидный теоретический и практический багаж: он окончил два университета и в свое время разрабатывал военное программное обеспечение в фирме Burrows.

Фишер предварительно изучил вопрос о затратах министерства обороны на программное обеспечение и настолько хорошо разобрался в путанице языков, что не задумываясь мог ответить, какой диалект используется в министерстве на каждом устройстве и какими его свойствами определялся такой выбор.

В апреле 1975 г., через три месяца после образования комитета HOLWG, первый набросок требований к универсальному языку был передан для ознакомления военным, в промышленность и академические круги под кодовым названием «Соломенный».

Выбор названия был не случаен: Фишер и Уайтекер рассчитывали, что рецензенты «как следует потреплют» документ и предложат свои улучшения.

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

Каждый последующий документ получал название, которое как бы отмечало прогресс в упрочении требований: «Деревянный», «Оловянный», «Железный», «Пересмотренный железный» и, наконец, «Стальной».

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

Однако последующий анализ этих и десятков других языков показал, что ни один из них не удовлетворяет полученным требованиям более чем на 75%.

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

В мае 1977 г., когда спецификации еще уточнялись, комитет запросил предложения у самых известных проектировщиков языков из разных стран, причем предложения должны были базироваться на одном из трех языков: ПЛ/1, Алгол-68 и Паскаль.

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

Было отобрано четыре предложения для доработки в течение предварительного шестимесячного этапа. Эти предложения (все основаны на Паскале) исходили от двух компаний из шт. Массачусетс, Softek и Intermetriks, калифорнийской фирмы SRI International и CII-Honeywell Bull, парижского филиала американской компании Honeywell Corporation.

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

В 1978 г. на основе оценок более 400 рецензентов два из четырех проектов (Красный - Intermetriks и Зеленый - CII-Honeywell Bull) были отобраны для окончательного рассмотрения.

Последовавший затем этап уточнения растянулся на год и протекал весьма интенсивно. Участник «красной» группы вспоминает, что, ложась ночью спать, он плакал от усталости. «Красный» был более консервативным языком, а «Зеленый» представлял собой кратко описанный язык авангардистского толка, - заявил один из соревнующихся. - На заключительном этапе оба языка изменились: «Красный» стал более авангардистским, а «Зеленый» - более консервативным, поскольку стал толще».

Победителя объявили в мае 1979 г. Им оказалась фирма CII-Honeywell Bull. Победивший язык, «Зеленый», был окрещен Адой, в честь Огасты Ады Лавлейс, математика и писателя XIX в., которую нередко называют первым в мире программистом - за популярное описание Аналитической машины Чарльза Бэббиджа.

Эта победа была личным триумфом Жана Ишбиа, возглавлявшего группу «Зеленого». Ишбиа родился в Париже, обучался в престижной Политехнической школе. Позже французское правительство направило его на учебу в США. При подготовке кандидатской диссертации по оптимальному размещению систем метро он так увлекся программированием, что с трудом закончил свою работу.

Вскоре после этого Ишбиа поступил на службу в новую французскую компанию CII (которая позже превратилась в CII-Honeywell Bull), где в 1972 г. разработал свой первый язык программирования ЛИС (LIS, от Langage d'Implementation de Systemes - язык реализации систем).

ЛИС, созданный под влиянием Паскаля, и явился тем зерном, из которого вырос язык Ада.

В процессе состязания проектов Ишбиа, говоривший не менее чем на пяти языках и имеющий «коричневый пояс» по дзюдо, погонял себя интенсивнее, чем свою международную группу, состоявшую из 10 человек - представителей США, Великобритании, Германии и Франции.

Временами он работал по 100 часов в неделю, совершенствуя проект. Часто Ишбиа полагался на свою интуицию, принимая решения скорее на основе эстетических критериев, чем логического анализа. Как писал восхищенный член «красной» группы, результатом был язык, «разработанный не комитетом, а небольшой группой с сильным лидером».

Наиболее характерная черта языка Ада - главный акцент на структурное программирование.

Язык позволяет писать программы в виде пакетов, Т.е. самостоятельных модулей, которые разрабатываются отдельными программистами, а затем собираются вместе.

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

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

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

Кроме того, компилятор Ады занимает гораздо больший объем памяти, чем компилятор ее предшественника, Паскаля. Размеры и сложность языка Ада вызвали критику специалистов, в частности автора Паскаля Н. Вирта и его коллеги по противодействию Алголу-68 К.А.Р. Хоара. Последний, участвовавший вместе с Виртом в группе SRI International и выбывший из соревнования в полуфинале, сожалел о том, что «погремушки и побрякушки возобладали над фундаментальными понятиями безопасности и экономичности».

Выступая перед широкой аудиторией, Хоар изобразил устрашающую картину армады ракет, летящей не туда, куда следует, из-за не замеченной ошибки в компиляторе Ады.

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

Защищая свой язык, главный «архитектор» Ады Жан Ишбиа, выразив Вирту свое «восхищение и уважение», добавил: «Иногда Вирт верит в малые решения больших проблем. Я не верю в такие миражи. Крупные проблемы требуют крупных решений».

Другие защитники языка Ада утверждали, что единственная альтернатива подобному большому, сложному языку в больших проектах - это размножение компактных, простых и несовместимых языков (именно от этого Ада была призвана излечить).

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

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

Например, имелись в виду громадные программы, использование которых предполагается в системе СОИ. Пентагон предсказал, что к концу десятилетия 85% нового «критического» программного обеспечения (стоимостью 5 млрд. долл.) будет написано на Аде.

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

Другие основные языки программирования прошли утомительный процесс стандартизации, осуществляемый Американским национальным институтом стандартов (American National Standards Institute, ANSI) с целью ограничения числа диалектов.

Но ни один из предшествующих языков не был столь строго стандартизирован с самого начала, до появления диалектов. Таким образом, Ада в 1980 г. вплотную подошла к гарантированной мобильности: программу, написанную для одного компьютера, почти наверняка можно перекомпилировать и правильно выполнить на другой машине. Одно это делает Аду важным программным средством при разработке больших проектов, привнося хотя бы частичный порядок в беспокойный мир языков программирования.