Sémantika (informatika) - Semantics (computer science)
![]() | Tento článek obsahuje seznam obecných Reference, ale zůstává z velké části neověřený, protože postrádá dostatečné odpovídající vložené citace.Srpna 2020) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |
v teorie programovacího jazyka, sémantika je obor zabývající se pečlivým matematickým studiem významu programovací jazyky. Činí tak hodnocením významu syntakticky platný struny definován konkrétním programovacím jazykem, který ukazuje příslušný výpočet. V takovém případě, že vyhodnocení bude syntakticky neplatných řetězců, bude výsledkem nepočítání. Sémantika popisuje procesy, které počítač dodržuje při provádění programu v daném konkrétním jazyce. To lze ukázat popisem vztahu mezi vstupem a výstupem programu nebo vysvětlením, jak bude program proveden u určité plošina, tedy vytvoření a model výpočtu.
Formální sémantika například pomáhá psát překladače, lépe pochopit, co program dělá, a to dokázat, např. že následující -li
prohlášení
-li 1 == 1 pak S1 jiný S2
má stejný účinek jako S1
sama.
Přehled
Pole formální sémantiky zahrnuje všechny tyto oblasti:
- Definice sémantických modelů
- Vztahy mezi různými sémantickými modely
- Vztahy mezi různými přístupy k významu
- Vztah mezi výpočtem a základními matematickými strukturami z polí, jako je logika, teorie množin, teorie modelů, teorie kategorií, atd.
Má úzké vazby na další oblasti počítačová věda jako návrh programovacího jazyka, teorie typů, překladače a tlumočníci, ověření programu a kontrola modelu.
Přístupy
Existuje mnoho přístupů k formální sémantice; patří do tří hlavních tříd:
- Denotační sémantika, přičemž každá fráze v jazyce je interpretována jako a označení, tj. koncepční význam, o kterém lze uvažovat abstraktně. Takové označení jsou často matematické objekty obývající matematický prostor, ale není nutné, aby tomu tak bylo. Jako praktickou nutnost jsou denotace popsány pomocí nějaké formy matematické notace, kterou lze zase formalizovat jako denotační metajazyk. Například denotační sémantika funkční jazyky často překládají jazyk do teorie domény. Denotační sémantické popisy mohou také sloužit jako kompoziční překlady z programovacího jazyka do denotačního metajazyka a použít jako základ pro návrh překladače.
- Provozní sémantika, přičemž provádění jazyka je popsáno přímo (spíše než překladem). Provozní sémantika volně odpovídá výklad, ačkoli „implementačním jazykem“ tlumočníka je obecně matematický formalismus. Provozní sémantika může definovat abstraktní stroj (tak jako Stroj SECD ) a dávají význam frázím popisem přechodů, které indukují na stavech stroje. Alternativně, jako u čistého lambda kalkul „operační sémantiku lze definovat syntaktickými transformacemi frází samotného jazyka;
- Axiomatická sémantika, přičemž jeden dává smysl frázím popisem axiomy které se na ně vztahují. Axiomatická sémantika nerozlišuje mezi významem fráze a logickými vzorci, které ji popisují; jeho význam je přesně to, co se o tom dá v nějaké logice dokázat. Kanonickým příkladem axiomatické sémantiky je Logika hoare.
Rozdíly mezi třemi širokými třídami přístupů mohou být někdy vágní, ale všechny známé přístupy k formální sémantice používají výše uvedené techniky nebo jejich kombinaci.
Kromě volby mezi denotačním, operačním nebo axiomatickým přístupem většina variací ve formálních sémantických systémech vychází z volby podpory matematického formalizmu.
Variace
Některé varianty formální sémantiky zahrnují následující:
- Akční sémantika je přístup, který se snaží modularizovat denotační sémantiku, rozdělit proces formalizace do dvou vrstev (makro a mikrosemantika) a předdefinovat tři sémantické entity (akce, data a výnosy), aby se zjednodušila specifikace;
- Algebraická sémantika je forma axiomatická sémantika na základě algebraický zákony pro popis a uvažování o programová sémantika v formální způsob;
- Atributové gramatiky definovat systémy, které systematicky počítají "metadata " (volala atributy) pro různé případy syntaxe jazyka. Atributové gramatiky lze chápat jako denotační sémantiku, kde cílovým jazykem je jednoduše původní jazyk obohacený anotacemi atributů. Kromě formální sémantiky byly pro generování kódu v roce použity také gramatiky atributů překladače a rozšířit pravidelný nebo bezkontextové gramatiky s kontextové podmínky;
- Kategorický (nebo „funktoriální“) sémantika používá teorie kategorií jako základní matematický formalismus. Je dokázáno, že kategorická sémantika odpovídá nějaké axiomatické sémantice, která poskytuje syntaktickou prezentaci kategorických struktur. Denotační sémantika je také často příkladem obecné kategorické sémantiky;
- Sémantika souběžnosti je univerzální termín pro jakoukoli formální sémantiku, která popisuje souběžné výpočty. Historicky důležité souběžné formalizmy zahrnovaly Herecký model a zpracovat kalkul;
- Sémantika hry používá metaforu inspirovanou herní teorie.
- Predikátová sémantika transformátoru, vyvinutý společností Edsger W. Dijkstra, popisuje význam fragmentu programu jako funkce transformující a podmínka do předpoklad potřeboval to založit.
Popisující vztahy
Z různých důvodů by člověk chtěl popsat vztahy mezi různými formálními sémantikami. Například:
- Dokázat, že konkrétní operační sémantika pro jazyk splňuje logické vzorce axiomatické sémantiky pro daný jazyk. Takový důkaz ukazuje, že je „rozumné“ uvažovat o konkrétním (provozním) interpretační strategie pomocí konkrétního (axiomatického) kontrolní systém.
- Dokázat, že provozní sémantiku nad strojem na vysoké úrovni souvisí a simulace se sémantikou nad nízkoúrovňovým strojem, přičemž abstraktní počítač nízké úrovně obsahuje více primitivních operací než definice abstraktního stroje vysoké úrovně daného jazyka. Takový důkaz ukazuje, že nízkoúrovňový stroj „věrně implementuje“ vysokoúrovňový stroj.
Je také možné propojit více sémantik abstrakce prostřednictvím teorie abstraktní interpretace.
Dějiny
![]() | Tato sekce potřebuje expanzi. Můžete pomoci přidávat k tomu. (srpen 2013) |
Robert W. Floyd je připočítán se založením oboru sémantiky programovacího jazyka v Floyd (1967).[1]
Viz také
- Výpočetní sémantika
- Formální sémantika (logika)
- Formální sémantika (lingvistika)
- Ontologie
- Ontology_ (information_science)
- Sémantická ekvivalence
- Sémantická technologie
Reference
- ^ Knuth, Donald E. „Memorial Resolution: Robert W. Floyd (1936–2001)“ (PDF). Památníky fakulty Stanford University. Stanfordská historická společnost.
Další čtení
- Učebnice
- Floyd, Robert W. (1967). "Přiřazení významů programům" (PDF). Ve Schwartzu, J.T. (vyd.). Matematické aspekty informatiky. Proceedings of Symposium on Applied Mathematics. 19. Americká matematická společnost. 19–32. ISBN 0821867288.
- Hennessy, M. (1990). Sémantika programovacích jazyků: základní úvod do strukturované operační sémantiky. Wiley. ISBN 978-0-471-92772-3.
- Tennent, Robert D. (1991). Sémantika programovacích jazyků. Prentice Hall. ISBN 978-0-13-805599-8.
- Gunter, Carl (1992). Sémantika programovacích jazyků. MIT Stiskněte. ISBN 0-262-07143-6.
- Nielson, H. R .; Nielson, Flemming (1992). Sémantika s aplikacemi: Formální úvod (PDF). Wiley. ISBN 978-0-471-92980-2.
- Winskel, Glynn (1993). Formální sémantika programovacích jazyků: Úvod. MIT Stiskněte. ISBN 0-262-73103-7.
- Mitchell, John C. (1995). Základy programovacích jazyků (Postscript).
- Slonneger, Kenneth; Kurtz, Barry L. (1995). Formální syntax a sémantika programovacích jazyků. Addison-Wesley. ISBN 0-201-65697-3.
- Reynolds, John C. (1998). Teorie programovacích jazyků. Cambridge University Press. ISBN 0-521-59414-6.
- Harper, Robert (2006). Praktické základy programovacích jazyků (PDF). Archivovány od originál (PDF) dne 2007-06-27. (Pracovní návrh)
- Nielson, H. R .; Nielson, Flemming (2007). Sémantika s aplikacemi: Předkrm. Springer. ISBN 978-1-84628-692-6.
- Pařez, Aarone (2014). Základy programovacího jazyka. Wiley. ISBN 978-1-118-00747-1.
- Krishnamurthi, Shriram (2012). „Programovací jazyky: aplikace a tlumočení“ (2. vyd.).
- Poznámky z přednášky
- Winskel, Glynn. „Denotační sémantika“ (PDF). Univerzita v Cambridge.
externí odkazy
- Aaby, Anthony (2004). Úvod do programovacích jazyků. Archivovány od originálu na 2015-06-19.CS1 maint: BOT: stav původní adresy URL neznámý (odkaz) Sémantika.