Я доволен ответом Адрея, но я бы хотел продолжить.
Начнем с того, что денотационная семантика хочет сказать что-то вроде «смысл этой нотации таков». Настоящий семантик хотел бы вообразить, что значения - это то, что существует в нашем уме, а обозначения - это просто способ выражения этих значений. Отсюда вытекает требование, чтобы денотационная семантика была композиционной. Если значения являются первичными, а обозначения вторичными, то у нас нет другого выбора, кроме как определить значения больших обозначений как функции значений их составляющих.
Если мы примем эту точку зрения, тогда хорошая денотационная семантика должна отражать значения, которые, как мы предполагаем, мы имеем в своем уме. Любая композиционная семантика не обязательно отвечает всем требованиям. Если я придумываю композиционное семантическое определение, и никто не согласен с тем, что оно говорит о каких-то значениях, которые они имеют в своей голове, тогда оно мало что дает. Семантика игр в настоящее время находится в этой ситуации. Это композиционное определение, и технически довольно сильное, но мало кто согласен с тем, что оно имеет какое-то отношение к значениям, которые они имеют в своем уме.
Тем не менее, любое композиционное определение имеет различные технические преимущества. Мы можем использовать его для проверки эквивалентности или других свойств по индукции синтаксиса терминов. Мы можем использовать его для проверки правильности систем доказательств, опять же по наведению на синтаксис терминов. Мы можем проверить правильность компиляторов или методов анализа программ (которые по своей природе определяются индукцией по синтаксису). Полностью абстрактное семантическое определение имеет еще больше технических преимуществ. Вы можете использовать его, чтобы показать, что две программы не эквивалентны, что вы не можете сделать с любой произвольной композиционной семантикой. Полностью определяемое семантическое определение еще лучше. Здесь семантические области имеют именно то, что вы можете выразить на языке программирования (с некоторыми оговорками). Таким образом, вы можете перечислить значения в доменах, чтобы увидеть, какие есть значения, что было бы трудно сделать с помощью синтаксических обозначений. По всем этим признакам семантика игр блестяще оценивается.
Однако композиционные семантические определения с годами теряют свою остроту. Робин Милнер и Энди Питтс разработали ряд методов « оперативного мышления », которые работают исключительно над синтаксисом, но используют операционную семантику там, где это необходимо для разговора о поведении. Эти методы оперативного мышления являются низкотехнологичными. Нет фантазии математики. Нет бесконечных объектов. Мы можем научить их магистрантам, и каждый может их использовать. Поэтому многие люди задаются вопросом, зачем вообще нужна денотационная семантика. (Мартин Бергер, вероятно, находится в этом лагере.)
Лично у меня нет проблем с наличием множества инструментов в моем ящике для инструментов. Методы денотации могут быть лучше для одних задач, а методики для других. Исследователи, которые разрабатывают теорию, могут быть лучше настроены на тот или иной подход. Довольно часто мы можем выработать идеи в одном подходе и перенести эти идеи в другой подход. (Многие работы Энди Питтса такого рода. Реляционная параметрическость была разработана в денотационной обстановке, но он может понять, как переформулировать это как оперативное рассуждение. Когда я смотрю на это, я говорю: «Ух, я бы никогда думал, что это было бы возможно. "Логика разделения также идет по этому пути. Стив Брукс предоставил 60-страничное доказательство надежности для параллельной логики разделения с использованием денотационной семантики.
Операционные подходы также блестяще выигрывают, когда языки программирования становятся очень причудливыми со всеми видами зацикленных типов высшего порядка. Мы можем не знать, как математически моделировать такие вещи. Или стандартные математические модели могут оказаться несовместимыми в условиях цикличности. (Например, см. «Полиморфизм не является теоретико-множественным» Рейнольдса.) Операционные подходы, которые работают исключительно по синтаксису, могут аккуратно обойти все эти математические проблемы.
Другой подход, который является промежуточным между операционным и денотационным подходами, - это реализуемость . Вместо того, чтобы работать с синтаксическими терминами, как в операционных подходах, мы идем частично денотационно, используя некоторые другие формы математических представителей. Эти представители могут не квалифицироваться как настоящие денотационные «значения», но они будут, по крайней мере, немного более абстрактными, чем синтаксические термины. Например, для полиморфного лямбда-исчисления, мы можем сначала дать значения нетипизированным терминам (в некоторой модели нетипизированного лямбда-исчисления), а затем использовать их в качестве представителей («реализаторов»), чтобы сделать некоторую форму «операционного мышления» при немного более абстрактный уровень.
Итак, пусть будет здоровая конкуренция между денотационным, операционным и реализуемым подходами. Там нет никакого вреда.
С другой стороны, может также возникнуть некоторая «нездоровая» конкуренция между различными подходами. Люди, работающие с одним подходом, могут быть настолько привязаны к нему, что могут не видеть смысла других подходов. В идеале все мы должны осознавать сильные и слабые стороны различных подходов и развивать научное отношение к ним, даже если они не являются нашими любимыми.