Semantik (datalogi) - Semantics (computer science)

Ved programmering sprog teori , semantik er den pågældende med den strenge matematiske undersøgelse af betydningen af feltet programmeringssprog . Det gør det ved at evaluere betydningen af syntaktisk gyldige strenge, der er defineret af et specifikt programmeringssprog, og viser den involverede beregning. I et sådant tilfælde, at evalueringen ville være af syntaktisk ugyldige strenge, ville resultatet være ikke-beregning. Semantik beskriver de processer, en computer følger, når der udføres et program på det specifikke sprog. Dette kan vises ved at beskrive forholdet mellem input og output af et program eller en forklaring på, hvordan programmet vil blive udført på en bestemt platform , og dermed oprette en beregningsmodel .

Oversigt

Området for formel semantik omfatter alt følgende:

  • Definitionen af ​​semantiske modeller
  • Forholdet mellem forskellige semantiske modeller
  • Forholdet mellem forskellige tilgange til mening
  • Forholdet mellem beregning og de underliggende matematiske strukturer fra områder som logik , sætteori , modelteori , kategoriteori osv.

Det har tætte forbindelser til andre områder inden for datalogi såsom programmeringssprogsdesign , typeteori , kompilatorer og tolke , programverifikation og modelkontrol .

Tilgange

Der er mange tilgange til formel semantik; disse tilhører tre hovedklasser:

  • Denotationssemantik , hvor hver sætning i sproget tolkes som en betegnelse , altså en begrebsmæssig betydning, der kan tænkes abstrakt. Sådanne betegnelser er ofte matematiske objekter, der lever i et matematisk rum, men det er ikke et krav, at de skal være det. Som en praktisk nødvendighed beskrives betegnelser ved hjælp af en form for matematisk notation, som igen kan formaliseres som en denotationel metalsprog. For eksempeloversætterdenotationssemantik for funktionelle sprog ofte sproget til domæneteori . Denotationssemantiske beskrivelser kan også tjene som kompositionelle oversættelser fra et programmeringssprog til denotationelle metalsprog og bruges som grundlag for at designe kompilatorer .
  • Operationel semantik , hvorved sprogets eksekvering beskrives direkte (snarere end ved oversættelse). Operationel semantik svarer løst til fortolkning , selvom tolken "implementeringssprog" generelt set generelt er en matematisk formalisme. Operationel semantik kan definere en abstrakt maskine (såsom SECD -maskinen ) og give mening til sætninger ved at beskrive de overgange, de fremkalder på maskinens tilstande. Alternativt, som med den rene lambda -beregning , kan operationel semantik defineres via syntaktiske transformationer på selve sprogets sætninger;
  • Aksiomatisk semantik , hvorved man giver mening til sætninger ved at beskrive de aksiomer, der gælder for dem. Axiomatisk semantik skelner ikke mellem en sætnings betydning og de logiske formler, der beskriver den; dens betydning er præcis, hvad der kan bevises om det i en eller anden logik. Det kanoniske eksempel på aksiomatisk semantik er Hoare -logik .

Bortset fra valget mellem denotationelle, operationelle eller aksiomatiske tilgange, stammer de fleste variationer i formelle semantiske systemer fra valget af understøttende matematisk formalisme.

Variationer

Nogle variationer af formel semantik omfatter følgende:

Beskrivelse af relationer

Af forskellige årsager kan man ønske at beskrive forholdet mellem forskellige formelle semantikker. For eksempel:

  • At bevise, at en bestemt operationel semantik for et sprog opfylder de logiske formler for en aksiomatisk semantik for dette sprog. Et sådant bevis viser, at det er "sundt" at ræsonnere om en bestemt (operationel) fortolkningsstrategi ved hjælp af et bestemt (aksiomatisk) bevissystem .
  • For at bevise, at operationel semantik over en maskine på højt niveau hænger sammen med en simulering med semantikken over en maskine på lavt niveau, hvorved den abstrakte maskine på lavt niveau indeholder mere primitive operationer end den abstrakte maskindefinition på højt niveau for et givet sprog. Et sådant bevis viser, at maskinen på lavt niveau "trofast implementerer" maskinen på højt niveau.

Det er også muligt at relatere flere semantikker gennem abstraktioner via teorien om abstrakt fortolkning .

Historie

Robert W. Floyd krediteres for at have grundlagt området programmeringssprogssemantik i Floyd (1967) .

Se også

Referencer

Yderligere læsning

Lærebøger
Foredragsnotater

eksterne links