36 3.4. Семантические стили
микропроцессора. Для простых языков состояние машины представляет собой просто терм, а
поведение ее определяется функцией перехода, которая для каждого состояния либо указывает
следующее состояние, произведя над старым термом шаг упрощения, либо объявляет машину
остановившейся. Значением терма t объявляется конечное состояние, которого машина достигает,
будучи запущена с начальным состоянием t.
2
Иногда полезно дать для одного и того же языка несколько различных операционных семантик
— некоторые более абстрактные, чьи машинные состояния выглядят похоже на термы, записы-
ваемые программистом, другие ближе к структурам, которыми манипулирует настоящий компи-
лятор или интерпретатор языка. Доказательство того, что результаты работы этих различных
машин при выполнении одной и той же программы в каком-то смысле соответствуют друг другу,
представляет собой доказательство правильности реализации языка.
2. Денотационная семантика смотрит на значение с более абстрактной точки зрения: в качестве
значения терма принимается не последовательность машинных состояний, а некоторый матема-
тический объект, скажем, число или функция. Построение денотационной семантики для языка
представляет собой нахождение некоторого набора семантических доменов, а также определение
функции интерпретации, которая ставит термам в соответствие элементы этих доменов. Поиск
подходящих семантических доменов для моделирования различных языковых особенностей при-
вел к возникновению изящной и богатой области исследований, известной как теория доменов.
Одно из важных преимуществ денотационной семантики состоит в том, что она абстрагируется
от мелких деталей выполнения программы и концентрирует внимание на основных понятиях
языка. Кроме того, свойства выбранного набора семантических доменов могут использоваться
для обнаружения важных законов поведения программ — например, законов, утверждающих,
что две программы ведут себя одинаково, или что поведение программы соответствует некоторой
спецификации. Наконец, из свойств выбранного набора семантических доменов часто немедленно
ясно, что некоторые (желательные или нежелательные) вещи в языке невозможны.
3. Аксиоматическая семантика подходит к этим законам напрямую: вместо того, чтобы снача-
ла определить поведение программ (с помощью операционной или денотационной семантики), а
затем строить законы, соответствующие этому поведению, аксиоматические методы принимают
сами законы в качестве определения языка. Значение терма — это то, что о нем можно доказать.
Красота аксиоматических методов в том, что они концентрируют внимание на процессе рассуж-
дений о программах. Именно эта традиция мышления обогатила информатику такими мощными
инструментами, как инварианты.
В 60-е и 70-е годы считалось, что операционная семантика уступает двум другим стилям, что с
ее помощью можно быстро и без особого труда определить какие-то характеристики языка, но в це-
лом она менее изящна и слаба с математической точки зрения. Однако в 80-е годы более абстрактные
методы стали сталкиваться со все более неприятными техническими сложностями,
3
и простота и гиб-
кость операционной семантики стали по сравнению с ними выглядеть все более привлекательными —
особенно в свете новых достижений, начиная со Структурной Операционной Семантики Плоткина
(Plotkin 1981), Естественной Семантики Кана (Kahn 1987) и работ Милнера по Исчислению Взаимо-
действующих Систем (Calculus of Communicating Systems, CCS; Milner 1980, 1989, 1999). Эти работы
ввели в обращение более изящные, чем ранее, формализмы, и показали, как многие мощные методы,
изначально разработанные в рамках денотационной семантики, могут быть перенесены на операци-
онную почву. Операционная семантика стала быстроразвивающейся дисциплиной и часто выбирается
в качестве средства для определения языков программирования и изучения их свойств. Именно она
используется в этой книге.
2
Строго говоря, то, что мы здесь описываем, — это так называемая операционная семантика с малым шагом, извест-
ная также как структурная операционая семантика (Plotkin 1981). В Упражнении 3.5.17 вводится альтернативный стиль
с большим шагом, называемый также естественной семантикой (Kahn 1987), где единственный переход абстрактной
машины сразу вычисляет окончательное значение терма.
3
Для денотационной семантики камнем преткновения оказались недетерминистские вычисления и параллелизм; для
аксиоматической семантики — процедуры.
rev. 104