Operacijska semantika

U računarstvu, operacijska semantika je način davanja značenja računalnim programima na matematički rigorozan način.

Operacijska semantika općenito koristi neki apstraktni stroj poput interpretera za definiciju jezika. Ovaj stroj je apstraktan u smislu da koristi terme jezika kao svoj strojni kod. Za jednostavne jezike, stanje stroja je jednostavno term, i ponašanje stroja je definirano funkcijom prijelaza koja, za svako stanje, ili daje sljedeće stanje, ili obavlja korak pojednostavljenja terma, ili kaže da se stroj zaustavio. Značenje terma t se može uzeti kao kao konačno stanje stroja s t kao inicijalnim stanjem.

Evaluacijska povijest je slijed internih konfiguracija interpretera. Značenje programa u jeziku je evaluacijska povijest koju interpreter producira prilikom evaluacije programa.

Nedostatak operacijske semantike jest u tome što se program može shvatiti samo kao slijed konfiguracija interpretera – ne postoji strojno-neovisna definicija. Također je problem i u samom interpreteru, koji je predstavljen kao algoritam, obično poprilično složen za netrivijalne jezike, a nerijetko složen kao i sam jezik kojeg definira.

Strukturalna operacijska semantika jest ona maloprije opisanog oblika - u kojem se term evaluira u malim koracima. U prirodnoj semantici se koristi veliki korak, u kojem jedan prijelaz apstraktnog stroja evaluira term u konačni rezultat.

Prvi dana operacijska semantika jest ona od lambda računa.

Nedovršeni članak Operacijska semantika koji govori o računarstvu treba dopuniti. Dopunite ga prema pravilima Wikipedije.