Смысловое и языковое программирование

В теории языков программированиясемантика-это область . Связанная со строгим математическим изучением значения языков программирования. Он делает это путем оценки значения синтаксически допустимых строк определяется конкретным языком программирования. Показывающим участвующие в нем вычисления. В таком случае. Если вычисление будет иметь синтаксически недопустимые строки. Результатом будет отсутствие вычислений. Семантика описывает процессы. Которым следует компьютер при выполнении программы на этом конкретном языке. Это можно показать. Описав взаимосвязь между входом и выходом программы или объяснив . Как программа будет выполняться на определенной

платформе, тем самым создав модель вычислений.

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

если 1 = = 1 , то S1 else S2 

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

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

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

    логика, теория множеств . Теориямоделей, теория категорийи т. Д.

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

Существует множество подходов к формальной семантике. Которые относятся к трем основным классам:

  • Денотативная семантика, при которой каждая фраза в языке интерпретируется как денотат, то есть концептуальное значение. Которое можно мыслить абстрактно.

    Такие обозначения часто являются математическими объектами. Населяющими математическое пространство. Но это не является обязательным требованием. В качестве практической необходимости денотации описываются с помощью некоторой формы математической нотации, которая. В свою очередь. Может быть формализована как денотационный метаязык. Например, денотационная семантика функциональных языков часто переводит язык в теорию предметной области Денотационные семантические описания могут также служить композиционными переводами с языка программирования на денотационный метаязык и использоваться в качестве основы для проектирования

    компиляторов.

  • Операциональная семантика, при которой исполнение языка описывается непосредственно (а не посредством перевода). Операционная семантика слабо соответствует интерпретации, хотя опять-таки Операционная семантика может определять абстрактную машину (например, машину SECD) и придавать смысл фразам. Описывая переходы. Которые они вызывают в состояниях машины. В качестве альтернативы. Как и в случае чистого лямбда-исчисления, операциональная семантика может быть определена с помощью синтаксических преобразований на фразах самого языка;
  • Аксиоматическая семантика, посредством которой придается смысл фразам путем описания

    аксиом, применимых к ним. Аксиоматическая семантика не делает различия между значением фразы и описывающими ее логическими формулами; ее значение-это именно то. Что может быть доказано о ней в некоторой логике. Каноническим примером аксиоматической семантики является логика Хоара.

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

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

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

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

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

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

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

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

[значок]
Этот раздел нуждается в расширении. Вы можете помочь, добавив к нему. (Август 2013)

Роберт У. Флойду приписывают основание области семантики языка программирования в

книге Floyd (1967)[1].]

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

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

Внешние ссылки