Формальная спецификация
- 1 year ago
- 0
- 0
Спецификация (стандарт, определение) языка программирования — это предмет документации, который определяет язык программирования , чтобы пользователи и разработчики языка могли согласовывать, что означают программы на данном языке. Спецификации обычно являются подробными и формальными и в основном используются разработчиками языка, в то время как пользователи обращаются к ним в случае двусмысленности: например, спецификация языка C++ часто цитируется пользователями из-за сложности. Сопутствующая документация включает , который специально предназначен для пользователей, и логическое обоснование языка программирования, которое объясняет, почему спецификация написана именно так; последние обычно более неформальны, чем спецификации.
Не все основные языки программирования имеют спецификации; языки могут существовать и быть популярными в течение десятилетий без спецификации. Язык может иметь одну или несколько реализаций, поведение которых де-факто является стандартом, но при этом данное поведение не документировано в спецификации. Perl (Perl 5) — известный пример языка без спецификации, тогда как PHP получил спецификацию только в 2014 году, после использования в течение 20 лет .
Язык может быть реализован, а затем стандартизован, или стандартизован, а после этого реализован, или же два этих процесса могут развиваться вместе, что является в настоящее время обычной практикой. Это связано с тем, что реализация и спецификация обеспечивают проверку друг друга: для написания спецификации требуется точно указать поведение реализации, а реализация проверяет, что спецификация является возможной, целесообразна и последовательна.
Написания спецификации до реализации зачастую стали избегать после Алгол 68 (1968 г.), из-за неожиданных трудностей в реализации, когда реализация была отложена. Тем не менее, языки всё ещё время от времени используются и приобретают популярность без формальной спецификации: реализация языка необходима для его использования, в то время как спецификация является желательной, но не необходимой.
Спецификация языков программирования может принимать несколько форм, среди которых:
Синтаксис языка программирования обычно описывается с использованием комбинации следующих двух компонентов:
Формулирование строгой семантики большого, сложного, практичного языка программирования является сложной задачей даже для опытных специалистов, и получающаяся в результате спецификация может быть трудной для понимания всех, кроме экспертов. Ниже приведены некоторые из способов описания семантики языка программирования; все языки используют по крайней мере один из этих методов описания, а некоторые языки объединяют более одного :