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