Sémantika (informatika) - Semantics (computer science)

V programování teorie jazyka , sémantika je zaměřena na důsledné matematické studii o významu pole programovacích jazyků . Činí tak tak, že vyhodnotí význam syntakticky platných řetězců definovaných konkrétním programovacím jazykem a zobrazí příslušný výpočet. V takovém případě, že by vyhodnocení bylo syntakticky neplatných řetězců, by výsledkem bylo nepočítání. Sémantika popisuje procesy, kterými se počítač řídí při provádění programu v tomto konkrétním jazyce. To lze ukázat popisem vztahu mezi vstupem a výstupem programu nebo vysvětlením toho, jak bude program na určité platformě spuštěn , a tím se vytvoří model výpočtu .

Přehled

Oblast formální sémantiky zahrnuje všechny následující:

  • 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čtu a základních matematických struktur z oblastí, jako jsou logika , teorie množin , teorii modelu , teorie kategorie , atd

Má úzké vazby na další oblasti počítačové vědy, jako je návrh programovacího jazyka , teorie typů , překladače a překladače , ověřování programu a kontrola modelů .

Přístupy

Existuje mnoho přístupů k formální sémantice; tyto patří do tří hlavních tříd:

  • Denotační sémantika , přičemž každá fráze v jazyce je interpretována jako denotace , tj. Pojmový význam, o kterém lze uvažovat abstraktně. Takové denotace jsou často matematické objekty obývající matematický prostor, ale není podmínkou, aby tomu tak bylo. Jako praktická nutnost jsou denotace popsány pomocí nějaké formy matematické notace, která může být zase formalizována jako denotační metajazyk. Například denotační sémantika funkčních jazyků často překládá jazyk do teorie domén . Denotační sémantické popisy mohou také sloužit jako kompoziční překlady z programovacího jazyka do denotačního metajazyka a slouží jako základ pro navrhování překladačů .
  • Operační sémantika , přičemž provedení jazyka je popsáno přímo (spíše než překladem). Operační sémantika volně odpovídá interpretaci , i když opět „implementačním jazykem“ tlumočníka je obecně matematický formalismus. Operační sémantika může definovat abstraktní stroj (například stroj SECD ) a dát frázím význam popisem přechodů, které vyvolávají na stavech stroje. Alternativně, stejně jako u čistého lambda kalkulu , lze operační sémantiku definovat pomocí syntaktických transformací na fráze samotného jazyka;
  • Axiomatická sémantika , přičemž člověk dává frázím význam tím, že popisuje axiomy, které se na ně vztahují. Axiomatická sémantika nedělá rozdíl mezi významem fráze a logickými formulemi, které ji popisují; jeho význam je přesně to, co se na něm dá v nějaké logice dokázat. Kanonickým příkladem axiomatické sémantiky je Hoareova logika .

Na rozdíl od volby mezi denotačními, operačními nebo axiomatickými přístupy, většina variací ve formálních sémantických systémech vyplývá z volby podpory matematického formalismu.

Variace

Některé variace formální sémantiky zahrnují následující:

Popis vztahů

Z různých důvodů lze 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í (operativní) interpretační strategii pomocí konkrétního (axiomatického) důkazního systému .
  • Prokázat, že operační sémantika na stroji na vysoké úrovni souvisí se simulací se sémantikou na stroji na nízké úrovni, přičemž abstraktní stroj na nízké úrovni obsahuje primitivnější operace než definice abstraktního stroje na vyšší úrovni daného jazyka. Takový důkaz ukazuje, že nízkoúrovňový stroj „věrně implementuje“ stroj vyšší úrovně.

Je také možné propojit více sémantik prostřednictvím abstrakcí prostřednictvím teorie abstraktní interpretace .

Dějiny

Robert W. Floyd má zásluhu na založení oboru sémantiky programovacích jazyků ve Floydovi (1967) .

Viz také

Reference

Další čtení

Učebnice
Poznámky k výuce

externí odkazy