Спецификация на език за програмиране

от Уикипедия, свободната енциклопедия

Спецификация на език за програмиране (или стандарт или дефиниция за даден програмен език) в компютърната наука, и в случаите, когато езикът директно може да машинен код да даде инструкции за една машина или устройство, в Изчислителна техника и компютрите, е документ, издаден от организация, обединяваща програмисти, инженери и специалисти, който описва езика за програмиране, така че съответно програмистите и изпълнителите на софтуер, който трябва да работи с него, да могат да се разберат какво означават програмите на този език. В някои случаи спецификациите могат да бъдат четими и от потребителите на съответен софтуер, за да придобият малко по-задълбочена представа как този софтуер работи. На практика спецификациите се пишат от инженери и програмисти за инженери и програмисти.

Спецификациите обикновено са подробни и представляват официален документ, могат да имат и формален език, описващ работата по езика, и множо често се използват от изпълнителите, които ги четат, за да могат да пишат софтуер, съобразен с инженерните изисквания. Възможно е да се ползват и за справки в случай на неяснота по някоя тема; а като разбирани за най-високо ниво спецификацията на C ++ често се цитира от специалистите, например поради сложността, а сред програмистите и иженерите, това е тема за комуникацията, тоест работата по стандартизации и ползването на най-новите въведения в C++. Като свързана документация по спецификациите може да се разбира спецификация за друг език, която да е приложима, тоест включва справка за език за програмиране, която е предназначена за потребителите на софтуер и програмистите на тези езици, и е формална обосновка на езика за програмиране, която има въведение, обясняващо защо спецификацията е написана като такава, какво се включва в нея; в някои случаи описващите спецификацията свързани уебстраници са по-неформални от самата спецификация.

Стандартизация[редактиране | редактиране на кода]

Повечето езици за програмиране имат спецификации и документация, която ги описва на достъпен език, но програмните езиците могат да съществуват и да бъдат популярни (като SGML) дори десетилетия без спецификация. Програмният език може да има една или повече реализации, чието приложение и поведение може de facto да действа като стандарт, макар без това поведение да бъде документирано в публикувана онлайн спецификация. Perl е един пример за език, който разчита на да документациите, без да има обстойна стандартизация (до Perl 5), докато C++ и други операционни езици се налага да бъдат стандартизирани. Други пример е PHP, който също е основно базиран на документации, особено през 2014 г., след като се използва в продължение на 20 години. [1] Днес е препоръчителна практика реализацията и спецификацията да се правят едновременно, но все това не е задължително. Така се осигурява проверка помежду си: писането на спецификация изисква точно посочване на поведението на реализацията, а в реализацията се проверява дали спецификацията е възможна и последователна, както и дали реализацията има функции като практично приложение. Писането на спецификация първо до голяма степен се избягва от алгоритмичния език за програмиране ALGOL 68 (1968), поради неочаквани трудности при изпълнението, при които реализирането се отлага. Обаче все още се създават езици без официална спецификация и печелят популярност : реализирането е от съществено значение за използване, докато документацията е желателна, но не е от съществено значение (неофициално, „кодови разговори“).

Видове спецификации[редактиране | редактиране на кода]

Спецификацията на езика за програмиране може да има няколко форми, включвайки следното:

  • Изрично определение на синтаксиса и семантиката на езика. Докато синтаксисът обикновено се посочва с помощта на официална граматика, семантичните дефиниции могат да бъдат написани на естествен език (напр. Подходът, възприет за езика C ), или на официална семантика (напр. Стандартни спецификации [2] и схема [3] . Забележителен пример е езикът C, който придоби популярност без официална спецификация, вместо да бъде описан като част от книга, The C Programming Language (1978) и едва много по-късно официално стандартизиран в ANSI C (1989).
  • Описание на поведението на компилатор (понякога наричан „преводач“) за езика (например езика C++ и FORTRAN). Синтаксисът и семантиката на езика трябва да бъдат изведени от това описание, което може да бъде написано на естествен или официален език.
  • <i id="mwMA">Моделна</i> реализация, понякога написана на посочения език (напр. Prolog ). Синтаксисът и семантиката на езика са категорични в поведението на внедряването на модела.

Синтаксис[редактиране | редактиране на кода]

Синтаксисът на език за програмиране обикновено се описва с помощта на комбинация от следните два компонента:

  • регулярен израз, описващ неговите лексеми, и
  • граматика без контекст, която описва как лексемите могат да се комбинират, за да образуват синтактично правилна програма.

Семантика[редактиране | редактиране на кода]

Формулирането на строга семантика на голям, сложен и практичен език за програмиране е трудна задача дори за опитни специалисти и получената спецификация може да бъде трудна за разбиране от всеки, освен от експерти. По-долу са някои от начините, по които може да се опише семантиката на езика за програмиране; всички езици използват поне един от тези методи за описание, а някои езици комбинират повече от един [4]

  • Естествен език : Описание с човешки естествен език.
  • Стандартизирана и официална семантика : Описание по математика .
  • Референтни реализации: Описание от компютърна програма
  • Тестови пакети: Описание чрез примери за програми и очакваното им поведение. Макар че малко езикови спецификации започват в тази форма, развитието на някои езикови спецификации е повлияно от семантиката на набор от тестове (напр. В миналото спецификацията на Ada е била променена, за да съответства на поведението на тестовия пакет за оценка на съответствието на Ada).

Източници[редактиране | редактиране на кода]

  1. Announcing a specification for PHP, 30 юли 2014, Joel Marcey
  2. Milner, R., M. Tofte, R. Harper. The Definition of Standard ML (Revised). MIT Press, 1997. ISBN 0-262-63181-4.
  3. Kelsey, Richard. Section 7.2 Formal semantics // Revised5 Report on the Algorithmic Language Scheme. Посетен на 2006-06-09.
  4. Jones, D. Forms of language specification. 2008. Посетен на 2012-06-23.