При проектировании языка программирования проектировщики полностью определяют его операционную / денотационную семантику? - PullRequest
0 голосов
/ 18 января 2019

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

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

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

Ответы [ 2 ]

0 голосов
/ 24 января 2019

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

  • LISP
  • PERL
  • TCL

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

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

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

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

0 голосов
/ 18 января 2019

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

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

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

...