1.3. ЦЕЛИ И ИСТОЧНИКИ РАЗРАБОТКИ

Язык был разработан, исходя из трех противоречивых требований:

• обеспечить надежность и сопровождение программ;

• поддерживать программирование как вид человеческой деятельности;

• обеспечить эффективность программ.

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

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

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

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

Ни одна из указанных выше целей разработки языка не откладывалась на будущее. Все они учитывались одновременно и с самого начала разработки.

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

Другое обстоятельство, существенно упростившее разработку, было следствием приобретенного ранее опыта реализации удачных проектов с целями, подобными указанным выше, на базе языка Паскаль. Такими языками являются языки Евклид, Лис, Меса, Модула и Сью. Многие из ключевых идей и синтаксических форм этих языков имеют аналоги в языке Ада. Некоторые существующие языки, такие как Алгол-68 и Симула, а также современные проекты языков Альфард и Клу, также повлияли на разработку языка, хотя и в меньшей степени, чем языки семейства Паскаль.

Наконец, большое значение для определения стандарта языка имели его начальная разработка (язык «Зеленый»), проекты языков «Красный», «Голубой» и «Желтый», рассмотрение различных стадий проекта и тысячи замечаний, полученных из 15 стран на предварительных этапах разработки и в процессе голосования при стандартизации, — все это оказало значительное влияние на определение стандарта языка.