50 Глава 1. Проблемы разработки языка
накопилось достаточно опыта в его применении, но и не слишком поздно, чтобы
не поощрять создание несовместимых реализаций.
Из языков, описанных в данной книге, FORTRAN был стандартизован слиш
ком поздно, когда было уже много несовместимых реализаций, а Ada, наоборот, —
слишком рано, когда еще не было ни одной. Вовремя появились стандарты языков
C и Pascal, когда они уже начали распространяться, но еще не было большого ко
личества несовместимых версий.
Соответствие. Если существует стандарт языка, то, естественно, возникает во
прос о соответствии этому стандарту. Программа считается соответствующей
стандарту, если она использует только те возможности, которые определены дан
ным стандартом. Компилятор является соответствующим стандарту, когда пос
ле компиляции соответствующей стандарту программы при ее выполнении полу
чается правильный результат.
Следует отметить, что здесь ничего не говорится о расширениях стандарта.
Если в компилятор добавлены дополнительные возможности, то любая про
грамма, использующая эти возможности, не является соответствующей стандар
ту и стандарт ничего не говорит о том, какими должны быть результаты выпол
нения таких программ. Стандарт обычно относится только к соответствующим
стандарту программам. Вследствие этого большинство компиляторов всегда име
ют возможности, которые не описаны стандартом. Поэтому следует проявлять
осторожность при использовании локальной реализации как окончательной
инстанции при выяснении смысла какойлибо языковой конструкции. (В каче
стве примера можно рассмотреть программу anomaly на языке Pascal, приведен
ную в листинге 9.1.)
Устаревание стандартов. Накопленные знания и опыт программирования под
сказывают, что развитие новых компьютерных архитектур требует включения в
языки новых возможностей. Спустя несколько лет после утверждения стандарта
языка, он может выглядеть весьма причудливо. Так устарел исходный стандарт
FORTRAN 66, поскольку в нем не предусмотрены многие возможности современ
ных языков, такие как типы, вложенные управляющие структуры, инкапсуляция,
блочная структура и многое другое из арсенала современных языков программи
рования.
В связи с этим процесс стандартизации стал предусматривать возможность об
новления. Каждый стандарт должен пересматриваться раз в пять лет и либо об
новляться, либо совсем отменяться. Правда, всегда находится какаялибо причи
на для нарушения пятилетнего срока, но тем не менее такой процесс по большей
части достаточно эффективен. Первый стандарт языка FORTRAN был принят в
1966 г., затем он был пересмотрен в 1978 г. (хотя срок завершения разработки стан
дарта в 1977 г. и был перенесен на несколько месяцев, язык все же называется
FORTRAN 77), а затем в 1990 г. стандарт был снова пересмотрен. Язык Ada был
стандартизован в 1983 г., а пересмотрен в 1995 г.
Один из вопросов, связанных с обновлением стандарта, заключается в следую
щем: что делать с уже существующим набором написанных в соответствии со ста
рым стандартом программ? Компании затратили большие средства на создание
программного обеспечения, а переписывать все существующие программы под
новую версию языка — весьма дорогостоящее мероприятие. Поэтому в большин