Простое определение “семантики”, поскольку это является наиболее часто используемым относительно программирования языков/API?

Мне сегодня пришло в голову, что, хотя я принял и нечасто не использую термин "семантика" при обращении к элементам языка и соглашениям о присвоении имен, у меня нет смысла формального определения.

Моя попытка найти формальное определение в домене программирования заставила мои глаза потускнеть.

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

Этим определением, тем не менее, является моя собственная идея. Я был главной Антропологией/Английским языком и никогда не брал курс Информатики. Это преподается в CS?

Существует ли более точное определение, которое может быть сведено к оператору или два, а не исчерпывающая и исчерпывающая статья?

9
задан Jay 19 July 2010 в 00:29
поделиться

3 ответа

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

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

6
ответ дан 4 December 2019 в 12:16
поделиться

С точки зрения теории и практики языков программирования, языковые элементы обладают семантикой. Соглашения об именах - нет. И семантика не имеет ничего общего с «верностью» чему-либо, за исключением, возможно, того, что, если реализация верна, ее иногда называют «верной семантике».

Помимо этого, трудно обобщить, потому что существует так много разных стилей семантики. .

  • Кристофер Стрейчи был тем, кто действительно продвигал идею о том, что обычно фраза (подумайте декларация , определение , утверждение или выражение ]) состоит из более мелких подфраз, и что значение (семантика) более крупной фразы должно быть функцией значения составляющих подфраз. В этом стиле каждая синтаксически правильно сформированная подфраза имеет семантику. Похоже, это то, что вы ищете.

Существуют и другие стили семантики, называемые «операционная семантика», где для данной программы семантика сообщает вам, как эта программа будет выполняться на абстрактной машине (или, в другом варианте, семантика говорит не о том, как программа будет выполняется, но только каков будет результат).

Существует «аксиоматическая семантика», которая примерно определяет, какие факты вы можете доказать об отдельных программах. Аксиоматическая семантика - это набор действенных методов доказательства. Это зависит от реализации, чтобы убедиться, что все доказуемые утверждения верны.

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

Наконец, можно говорить, среди прочего, о «семантике» абстрактного типа данных, класса или интерфейса. Это использование намного более свободно, но оно сводится к спецификации допустимого поведения. Я советую вам избегать слова «семантика» в этом контексте и использовать вместо него слово «контракт» или «спецификация». Это позволит избежать путаницы.


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

5
ответ дан 4 December 2019 в 12:16
поделиться

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

Как вы можете видеть на странице википедии, у вас в основном три вида семантики:

  • операционная семантика выражает значение языка, определяя, как абстрактная виртуальная машина ведет себя всякий раз, когда она выполняет термин. (например: + : извлекает два элемента из стека и помещает сумму.Это НЕ формально, и это НЕ , как вы действительно должны это рассматривать, это просто для того, чтобы дать вам представление). Это наиболее часто используемый для описания семантики «нормальных» языков программирования. Например, для Java у вас может быть для каждого возможного термина последовательность инструкций JVM, предназначенных для выполнения для моделирования этого термина. Вероятно, когда вы спросили значение семантики , это именно то, что вы искали.
  • денотационная семантика - это другой подход: вы придаете каждому термину языка значение, которое представлено математической функцией. Итак, для предыдущего примера у вас будет функция f , связанная с + , которая содержит семантику (эффективное значение) термина
  • аксиоматическая семантика - это способ аннотируйте термины вашего языка, показывая, как они изменяют действительность некоторых логических формул, которые вы хотите проверить в своей программе. Вам следует подумать о прочтении этого только потому, что используемые правила вывода и аксиомы похожи в том, как вы разрабатываете этот вид семантики, но это объясняется на практике

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

6
ответ дан 4 December 2019 в 12:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: