Спецификация программирование сайта

В вычислительнойтехнике спецификация языка программирования (или стандарт или определение) — это артефакт документации . Который определяет язык программирования, чтобы пользователи и исполнители могли договориться о том. Какие программы на этом языке означают. Спецификации. Как правило. Детализированы и формальны. И в основном используются разработчиками. Причем пользователи ссылаются на них в случае неясности; спецификация C++ часто цитируется пользователями, например. Из-за сложности. Связанная документация включает в себя справочникпо языку программирования . Который предназначен специально для пользователей, и

обоснование языка программирования, что объясняет. Почему спецификация написана так. Как она есть; они. Как правило. Более неформальны. Чем спецификация.

Стандартизация

Не все основные языки программирования имеют спецификации. И языки могут существовать и быть популярными в течение десятилетий без спецификации. Язык может иметь одну или несколько реализаций. Поведение которых выступает в качестве стандарта де-факто. Без документирования этого поведения в спецификации. Perl (через Perl 5) является заметным примером языка без спецификации. В то время как PHP был определен только в 2014 году. После того как он использовался в течение 20 лет.

[1] Язык может быть реализован и затем определен. Или определен и затем реализован. Или они могут развиваться вместе. Что является обычной практикой сегодня. Это происходит потому. Что реализации и спецификации обеспечивают проверки друг на друга: написание спецификации требует точного указания поведения реализации. А реализация проверяет. Что спецификация возможна. Практична и последовательна. Написание спецификации перед реализацией в значительной степени избегается с тех пор, как ALGOL 68 (1968). Из-за неожиданных трудностей в осуществлении. Когда осуществление откладывается.

Однако языки все еще иногда реализуются и приобретают популярность без формальной спецификации: реализация необходима для использования. В то время как спецификация желательна. Но не существенна (неофициально,

АЛГОЛ 68 был первым (и, возможно. Одним из последних) основным языком. Для которого было сделано полное формальное определение. Прежде чем он был реализован.

Спецификация языка программирования может принимать несколько форм. Включая следующие:

  • Явное определение синтаксиса и семантики языка. В то время как синтаксис обычно задается с помощью формальной грамматики. Семантические определения могут быть написаны на

    естественном языке (например, подход. Принятый для языка C) или формальной семантики (например, стандартные спецификации ML[3] и Scheme[4]). Примечательным примером может служить язык Си. Который приобрел популярность без формальной спецификации. Вместо этого он был описан как часть книги Язык программирования СиANSI C (1989).

  • Описание поведения компилятора (иногда называемого языка С++ и Фортрана). Синтаксис и семантика языка должны быть выведены из этого описания. Которое может быть написано на естественном или формальном языке.

  • Реализация модели, иногда написанная на указанном языке (например, Пролог). Синтаксис и семантика языка эксплицитно отражаются в поведении реализации модели.
[значок]
Этот раздел нуждается в расширении. Вы можете помочь, добавив к немучто-то . (Февраль 2018)

Синтаксис языка программирования обычно описывается с помощью комбинации следующих двух компонентов:

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

Ниже приведены некоторые из способов описания семантики языка программирования; все языки используют по крайней мере один из этих методов описания. А некоторые языки объединяют более одного[5]

Естественный язык

Наиболее широко используемые языки определяются с помощью описания их семантики на естественном языке. Это описание обычно принимает форму справочного руководства по языку. Эти руководства могут занимать сотни страниц, например. Печатная версия Спецификации языка Java, 3-е Изд., составляет 596 страниц.

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

Например, семантика потоков Java была определена на английском языке. И позже было обнаружено. Что спецификация не обеспечивает адекватного руководства для исполнителей.]

Формальная семантика

Формальная семантика основана на математике. В результате они могут быть более точными и менее двусмысленными. Чем семантика естественного языка. Однако для облегчения понимания формальных определений часто включаются дополнительные описания семантики на естественном языке. Например, Стандарт ИСО для Модуля-2 содержит как формальное. Так и естественное языковое определение на противоположных страницах.

Языки программирования. Семантика которых описана формально. Могут извлечь много преимуществ. Например:

  • Формальная семантика позволяет математически доказать правильность программы;
  • Формальная семантика облегчает проектирование систем типови доказательства обоснованности этих систем типов;
  • Формальная семантика может устанавливать однозначные и единообразные стандарты для реализации языка.

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

или проверка теоремы может повысить уверенность программиста (или языкового дизайнера) в правильности доказательств программ (или самого языка). Мощность и масштабируемость этих инструментов широко варьируются: полная формальная верификация вычислительно интенсивна. Редко масштабируется за пределы программ. Содержащих несколько сотен строк[требуется цитирование], и может потребовать значительной ручной помощи от программиста; более легкие инструменты. Такие как модельные шашки они требуют меньше ресурсов и используются в программах. Содержащих десятки тысяч строк; многие компиляторы применяют статические

проверки типов к любой компилируемой программе.

Эталонная реализация

Эталонная реализация-это единственная реализация языка программирования. Который обозначается как авторитетный. Поведение этой реализации проводится для определения правильного поведения программы. Написанной на языке. Этот подход имеет несколько привлекательных свойств. Во-первых, она точна и не требует человеческой интерпретации: споры о значении программы могут быть разрешены простым выполнением программы на эталонной реализации (при условии. Что реализация ведет себя детерминированно для этой программы).

С другой стороны. Определение семантики языка через эталонную реализацию также имеет ряд потенциальных недостатков. Главным из них является то. Что он объединяет ограничения ссылочной реализации со свойствами языка. Например, если ссылочная реализация имеет ошибку. То эта ошибка должна рассматриваться как авторитетное поведение. Другим недостатком является то. Что программы. Написанные на этом языке. Могут полагаться на причуды в ссылочной реализации. Препятствуя переносимости между различными реализациями.

Тем не менее. Несколько языков успешно используют подход эталонной реализации.

Например, считается. Что интерпретатор Perl определяет авторитетное поведение программ Perl. В случае Perl модель распространения программного обеспечения с открытым исходным кодом способствовала тому. Что никто никогда не создавал другую реализацию языка. Поэтому вопросы. Связанные с использованием эталонной реализации для определения семантики языка. Являются спорными.

Тестовый набор

Определение семантики языка программирования в терминах набора тестов включает в себя написание ряда примеров программ на этом языке. А затем описание того. Как эти программы должны вести себя — возможно. Записывая их правильные выходные данные.

Программы и их выходные данные называются Любая правильная языковая реализация должна затем производить точно правильные выходные данные в программах набора тестов.

Главное преимущество такого подхода к семантическому описанию состоит в том. Что легко определить. Проходит ли языковая реализация тестовый набор. Пользователь может просто выполнить все программы в тестовом наборе и сравнить выходы с желаемыми выходами. Однако при самостоятельном использовании подход набора тестов также имеет серьезные недостатки. Например, пользователи хотят запускать свои собственные программы. Которые не являются частью набора тестов; действительно. Языковая реализация. Которая могла

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

недетерминированным.

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

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

Языковые спецификации

Несколько примеров официальных или черновых языковых спецификаций:

  • Спецификации написаны в основном в формальной математике:
  • Спецификации написаны в основном на естественном языке:
  • Технические характеристики через тестовый набор: