48
ГЛАВА 1. ПОНЯТИЯ
Чем определяется последовательность действий линейной программы? Что
может делать транслятор? И как это зависит от языка программирования?
Ответы на эти и другие вопросы поможет дать разбор действий и изучение
структуры конкретной программы. Ниже этот анализ проводится для про-
граммы 1.3.3. Будет, в частности, показано, что даже в самом простом случае
линейной программы структура вычислений не во всем соответствует струк-
туре текста программы, что записанный алгоритм — это не совсем то, что
имеет в виду разработчик программы, когда он размышляет над решением
программистской задачи.
§ 1.4. СТРУКТУРА ВЫЧИСЛЕНИЙ И СТРУКТУРА ТЕКСТА ПРОГРАММЫ
Текст программы носит двойственную природу: это операционная струк-
тура,ориентированная на человека, но в то же время допускающая интерпре-
тацию абстрактным автоматом. Например, структура вычислений програм-
мы 1.3.3 представлена на рис. 1.5, а структура ее текста — на рис. 1.6. Из
этих рисунков видно, что понятия, использованные при задании текстовой
структуры, во многом обусловлены тем, как вычисления представлены в ви-
де текста, т. е. последовательности символов. Структура вычислений более
свободна в этом отношении.
Поэтому различные тексты программ часто порождают эквивалентные
с точки зрения результатов вычислений программы. Более того, традици-
онная запись программы избыточна с точки зрения абстрактных вычисле-
ний, и поэтому могут возникать недоразумения, когда сам человек при пере-
стройке программы забывает, какие именно аспекты текста для него важны,
а какие — нет. С другой стороны, запись в программе часто допускает от-
носительную свободу структуры вычислений: детали, важные для человека,
могут оказаться не важны для вычисляющего программу автомата. Все это,
в частности, порождает участки строго последовательных действий и дей-
ствий, которые можно выполнять в произвольном порядке.
1.4.1. Последовательное, параллельное и
совместное исполнение
Для того, чтобы разобраться с тем, как порядок конструкций в тексте про-
граммы соотносится с порядком их исполнения абстрактным вычислителем
и с представлением абстрактного вычислителя в конкретном, целесообразно
рассмотреть понятия последовательного, параллельного и совместного ис-