Семантика (информатика) - Semantics (computer science)

В теория языков программирования, семантика область, связанная со строгим математическим изучением значения языки программирования. Это делается путем оценки значения синтаксически действительный струны определяется конкретным языком программирования, показывая задействованные вычисления. В таком случае, если оценка будет синтаксически недопустимой строкой, результатом будет невычисление. Семантика описывает процессы, которым следует компьютер при выполнении программы на этом конкретном языке. Это можно показать, описав взаимосвязь между вводом и выводом программы или объяснив, как программа будет выполняться на определенном Платформа, следовательно, создавая модель вычисления.

Формальная семантика, например, помогает писать компиляторы, лучше понять, что делает программа, и доказать, например, что следующие если заявление

если 1 == 1 тогда S1 еще S2

имеет тот же эффект, что и S1 один.

Обзор

Область формальной семантики включает в себя все следующее:

  • Определение семантических моделей
  • Отношения между разными семантическими моделями
  • Отношения между разными подходами к значению
  • Связь между вычислениями и лежащими в их основе математическими структурами из таких полей, как логика, теория множеств, теория моделей, теория категорий, так далее.

Он имеет тесные связи с другими областями Информатика такие как дизайн языка программирования, теория типов, компиляторы и переводчики, проверка программы и проверка модели.

Подходы

Есть много подходов к формальной семантике; они принадлежат к трем основным классам:

  • Денотационная семантика, при этом каждая фраза на языке интерпретируется как обозначение, то есть концептуальное значение, которое можно мыслить абстрактно. Такие обозначения часто являются математическими объектами, населяющими математическое пространство, но это не является обязательным требованием. В качестве практической необходимости обозначения описываются с помощью некоторой формы математической записи, которая, в свою очередь, может быть формализована как денотационный метаязык. Например, денотационная семантика функциональные языки часто переводят язык на теория предметной области. Денотационные семантические описания могут также служить в качестве композиционных переводов с языка программирования на денотационный метаязык и использоваться в качестве основы для проектирования компиляторы.
  • Операционная семантика, при этом выполнение языка описывается напрямую (а не переводом). Операционная семантика примерно соответствует интерпретация, хотя опять же «язык реализации» интерпретатора - это, как правило, математический формализм. Операционная семантика может определять абстрактная машина (такой как Машина SECD ), и придают смысл фразам, описывая переходы, которые они вызывают в состояниях машины. В качестве альтернативы, как с чистым лямбда-исчисление операционная семантика может быть определена с помощью синтаксических преобразований фраз самого языка;
  • Аксиоматическая семантика, посредством чего придают смысл фразам, описывая аксиомы которые относятся к ним. Аксиоматическая семантика не делает различий между значением фразы и логическими формулами, которые ее описывают; его значение является именно то, что можно доказать с помощью некоторой логики. Канонический пример аксиоматической семантики: Логика Хоара.

Различия между тремя широкими классами подходов иногда могут быть нечеткими, но все известные подходы к формальной семантике используют вышеупомянутые методы или их комбинацию.

Помимо выбора между денотационным, операционным или аксиоматическим подходами, наибольшее разнообразие формальных семантических систем возникает из-за выбора поддерживающего математического формализма.

Вариации

Некоторые варианты формальной семантики включают следующее:

Описание отношений

По разным причинам кто-то может захотеть описать отношения между различной формальной семантикой. Например:

  • Доказать, что конкретная операционная семантика языка удовлетворяет логическим формулам аксиоматической семантики этого языка. Такое доказательство демонстрирует, что разумно рассуждать о конкретном (рабочем) стратегия интерпретации используя частный (аксиоматический) система доказательств.
  • Чтобы доказать, что операционная семантика над машиной высокого уровня связана симуляция с семантикой над машиной нижнего уровня, посредством чего абстрактная машина нижнего уровня содержит больше примитивных операций, чем определение абстрактной машины высокого уровня данного языка. Такое доказательство демонстрирует, что машина нижнего уровня "точно реализует" машину высокого уровня.

Также возможно связать множественную семантику через абстракции через теорию абстрактная интерпретация.

История

Роберт В. Флойд считается основателем области семантики языков программирования в Флойд (1967).[1]

Смотрите также

использованная литература

  1. ^ Кнут, Дональд Э. «Мемориальная резолюция: Роберт В. Флойд (1936–2001)» (PDF). Мемориалы факультета Стэнфордского университета. Стэнфордское историческое общество.

дальнейшее чтение

Учебники
Конспект лекций

внешняя ссылка