При разработке языка программирования полностью ли определяют его операционную / денотационную семантику?

Для языков, представленных на академических конференциях, таких как POPL или ICFP, часто семантика языка (в форме операционная или денотационная семантика) хорошо определены. Я пытался найти документированную семантику для популярных языков (например, C, Python, JavaScript), но не нашел.

Когда разрабатываются такие языки с «тяжелыми» (относительно тяжелыми по сравнению с языками, разработанными как доказательства концепции) функциями, добавляют ли разработчики (или члены комитета) этих языков функции без указания их семантики? Так ли обстоит дело с большинством популярных языков программирования?

Если так, я думаю, что это имеет практический смысл, потому что не каждый человек, который хочет внести свой вклад в развитие языка, должен быть исследователем PL. Но мне было интересно, какие существуют компромиссы в реальном мире.


person sshh    schedule 17.01.2019    source источник
comment
Семантика ecmascript (javascript) исчерпывающе указана в стандарте ECMA 262   -  person rici    schedule 18.01.2019


Ответы (2)


Семантика некоторых языков динамического программирования появляется, потому что они минимальны по своему синтаксическому ядру и в основном определяются их библиотеками (язык, который фактически используется для программирования, намного больше, чем тот, который определяется синтаксисом). Примеры:

  • LISP
  • PERL
  • TCL

Некоторые языки определены с такой синтаксической неоднозначностью, что семантика в конечном итоге определяется конкретной реализацией. Примеры:

  • Ранний C ++
  • C ++ с STL
  • AG Natural

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

В объектно-ориентированных языках (и других языках, которые отправляются в зависимости от типа объектов) семантика выражения зависит от типов задействованных объектов, и они могут в значительной степени отличаться от семантики эквивалентных выражений для встроенных и стандартных типы.

person Apalala    schedule 24.01.2019

Почти все языки обычно определяются с помощью нормативной нотации, такой как BNF. На этом сайте есть ссылки на многие.

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

Частично это входит в дизайн HTML5.2, который объясняет некоторые из рассуждения.

person Dragonthoughts    schedule 17.01.2019
comment
Вы вроде бы говорите здесь о синтаксисе, но вопрос в семантике. - person rici; 18.01.2019