1.2. МОДЕЛЬ ВЫЧИСЛЕНИЙ ФОН НЕЙМАНА И ТРАДИЦИОННЫЕ ЯЗЫКИ
25
рования, постепенно вбирающий в себя новые веяния из области языкотвор-
чества, но сохраняющий преемственность.
FORTRAN
сегодня — это эклек-
тическое собрание полезных и архаичных средств. Упоминая
FORTRAN
в
дальнейшем, мы чаще всего говорим о языке, сформировавшемся в середи-
не семидесятых, о так называемом
FORTRAN-77
. Модель вычислений языка
FORTRAN
в точности соответствует представлению середины XX века о том,
что нужно для реализации вычислительных алгоритмов и что можно реали-
зовать на компьютерах фон Неймановского типа (тогда это был единствен-
ный тип компьютеров). Таким образом, это наиболее типичный представи-
тель традиционных языков. Разработчики ранних версий языка
FORTRAN
не
принимали в расчет полезности независимого от системы программирования
определения языка. И его формальное определение по существу задавалось
транслятором. В результате случайные решения, принятые в ранних транс-
ляторах последующие разработчики вынуждены сохранять на многие годы.
Для этого языка такое положение дел объяснимо и простительно. Удивитель-
но, что и сегодня, в XXI веке появляются языки, зависимые от реализации,
которые претендуют на универсальное применение.
2. Algol 60. Язык, сформировавшийся под давлением идеи осуществимо-
сти одновременно понятного для компьютеров и для человека представле-
ния алгоритмов. Очень скоро утопичность идеи выяснилась, и
Algol 60
(до
него был еще
Algol 58
— индексация по году публикации первой официаль-
ной версии, но лишь
Algol 60
был утвержден в качестве стандарта и полу-
чил широкое распространение;
Algol 60
часто называют в литературе просто
Алгол
) стал не просто более строгим, но и более многословным аналогом
FORTRAN
. В
Алголе
появились и принципиальные новшества, выгодно от-
личающие его от предшественника. Это, прежде всего, определение языка,
независящее от транслятора, структурность описания языка и определение
действий абстрактного вычислителя на базе понятий из такого описания.
В
Алголе
предложена структурная организация контекстов выполнения
конструкций, которая выводит вычислитель языка за рамки канона однород-
ности и прямой произвольной индексной адресации памяти, — так называ-
емая блочная структура программы. Этой структуре отвечает определенная
дисциплина распределения памяти в рабочих программах, которые получа-
ются в результате трансляции алголовских текстов. Эта дисциплина, полу-
чившая название стековой, с тех пор используется повсеместно при реали-
зации языков программирования. Стековая дисциплина распределения памя-
ти является ограничением доступа к векторно организованной памяти, эле-
менты которой могут указываться в произвольном порядке, но именно это