Экскурс в историю
Осознание сложившегося положения привело в середине 70-х годов к разработке по инициативе министерства обороны США языка программирования, который впоследствии получил название Ада в честь Августы Ады Байрон, графини Лавлейс, дочери английского поэта лорда Байрона. Она была сотрудницей Чарльза Беббиджа, изобретателя аналитической машины, и написала для этой машины программу вычисления чисел Бернули - Августа Ада по праву считается первым в мире программистом.
Итак, в начале 70-х годов МО США обратило внимание на тенденцию существенного удорожания программного обеспечения вычислительных систем военного назначения. В частности, в 1973 году стоимость ПО уже составила 46% от общих затрат министерства на вычислительную технику. Несмотря на это во многих случаях качество программ не удовлетворяло предъявляемым к ним требований. Анализ показал, что применявшиеся средства разработки имели серьезные недостатки, препятствовавшие снижению трудоемкости и повышению качества ПО. К ним в первую очередь относились:
использование многочисленных языков программирования, их диалектов и версий;
использование плохо подходящих языков программирования для решения задач в конкретной прикладной области;
использование языков программирования, не поддерживающих прогрессивные методологии программирования;
отсутствие систем поддержки разработок для применявшихся языков программирования.
К этому времени стали очевидны преимущества языков высокого уровня, а компиляторы начали обеспечивать высокое качество объектных программ. Это позволило использовать языки высокого уровня для разработки систем, работающих в реальном масштабе времени. Однако язык высокого уровня, удовлетворяющий требованиям встроенных систем, отсутствовал. В связи с этим в 1974 году во всех трех родах войск: армии, авиации и флоте США начались разработки такого языка для своих внутренних целей. В 1975 году было осознано, что экономически выгоднее иметь один общий язык, который был бы пригоден для программирования всех встроенных вычислительных систем МО США. В этом же году была организована Рабочая группа по языку высокого уровня и одновременно прекратилось финансирование всех других исследований в данной области.
Первым шагом в деятельности Рабочей группы была разработка требований, предъявляемых к языку программирования высокого уровня со стороны армии, авиации и флота, а также промышленности и университетов. Отметим наиболее важные общие требования:
язык разрабатывается для программирования встроенных систем и поэтому не должен обладать излишней общностью или возможностями, выходящими за рамки этой области;
язык должен обеспечивать проектирование, разработку и сопровождение надежного ПО большого и сверхбольшого объема, которое эксплуатируется длительное время и подвержено постоянным изменениям;
язык должен быть хорошо определенным, непротиворечивым, машинно-независимым, что облегчает согласованность различных реализаций;
язык не должен вызывать замедление выполнения объективных программ за счет имеющихся, но не применяемых в данной программе средств;
язык должен быть спроектирован так, чтобы служить хорошей основой для создания вокруг него инструментального окружения;
язык должен быть примером эффективного практического применения последних достижений в области программирования;
текст программы на этом языке должен быть удобочитаемым, легкость же его написания не относится к первостепенным факторам.
Рабочая группа сформулировала также специальные требования, связанные с областью применения встроенных систем:
язык должен обеспечивать возможность работы с широким набором специализированных нестандартных устройств ввода-вывода, окончательные характеристики которых неизвестны на момент проектирования;
язык должен обеспечивать разработку ПО, устойчивого к исключительным ситуациям и ошибкам, иначе говоря, появление исключений не должно сопровождаться аварийным завершением программы;
в языке должны быть предусмотрены средства взаимодействия с таймером для обеспечения реакции программы на внешние условия в течение жестко определенного интервала времени;
язык должен обеспечивать получение эффективных исполняемых программ.
После тщательного изучения в начале 1977 года было признано, что ни один из существовавших тогда языков программирования непригоден в качестве единственного языка, но такой язык может быть создан. Экономические исследования целесообразности разработки языка на основе сформулированных требований показали, что применение единого языка даст возможность экономить сотни миллионов долларов ежегодно. Итогом деятельности Рабочей группы было принятие решения о разработке нового языка.
Язык разрабатывался в рамках международного конкурса и из семнадцати поступивших проектов для продолжения работ были отобраны четыре, а после обработки отзывов около четырехсот рецензентов из 80 организаций осталось два. Одновременно специалисты из Рабочей группы готовили требования к средствам поддержки разработок. В мае 1979 года из двух оставшихся проектов был выбран язык, получивший название Ада, разработанный группой из десяти человек под руководством Жана Ишбиа. Еще около полугода проводились испытания языка для выявления и устранения мелких недостатков. Вообще же, в работе над языком Ада в том или ином виде участвовали практически все лучшие специалисты мира в области языков программирования.
В конце 1980 года вместо Рабочей группы при МО США был создан комитет AJPO (Ada Joint Program Office) для координации всех работ, связанных с языком. В течение последующих лет этим комитетом был проведен комплекс мероприятий, направленных на недопущение появления подмножеств и расширений языка Ада. Справочное руководство по языку Ада стало сначала национальным стандартом США (ANSI/MIL-STD-1815A-1983), а затем и международным стандартом (ISO 8652:1987). Наконец, комитетом AJPO были подготовлены тесты и организована аттестация компиляторов языка Ада.
