25.09.2013 Views

Size-change grafer

Size-change grafer

Size-change grafer

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

1 Sammenfatning<br />

På baggrund af size-<strong>change</strong> terminationsanalyse af funktionelle programmeringssprog<br />

præsenteret i [POPL01] konstrueres en metode til size-<strong>change</strong> terminationsanalyse<br />

af et imperativt sprog. Det viser sig, at analysen er en anelse<br />

mere kompliceret i det imperative tilfælde. En implementation af metoden evalueres,<br />

og eksperimenter viser, at metoden er brugbar om end ineffektiv til analyse<br />

af større programmer.<br />

2 Indledning<br />

Bestemmelsen af hvorvidt et program terminerer, er en vigtig del af at skrive<br />

meningsfyldte og korrekte programmer. Derfor er det eftertragtet at finde en<br />

metode der på baggrund af programmets struktur kan sige noget om termination.<br />

Det er imidlertid ikke muligt generelt automatisk at afgøre, om et givet program<br />

terminerer for alle inddata. Terminationsanalyse går ud på at estimere terminationsegenskaben,<br />

så man ved hjælp af en algoritme i visse tilfælde kan give et<br />

positivt svar på terminationsspørgsmålet.<br />

Denne rapport bygger på den gennemgang af size-<strong>change</strong> terminationsprincippet<br />

anvendt på funktionelle programmeringssprog 1 , der præsenteres i artiklen<br />

[POPL01]. Denne artikel forudsættes kendt af læseren. Motivationen for at beskæftige<br />

sig med terminationsanalyse er, jvf. denne artikel, at terminationsanalyse<br />

har anvendelse inden for blandt andet:<br />

Programverifikation<br />

Automatisk programtransformering<br />

Partiel evaluering<br />

Hertil kan tilføjes, at terminationsanalyse i sig selv er et videnskabeligt interessant<br />

emne.<br />

Formålet med denne rapport er at undersøge size-<strong>change</strong> terminationsprincippets<br />

anvendelsesmuligheder for et imperativt programmeringssprog. Vi søger<br />

at bestemme, i hvor høj grad fremgangsmåden i det funktionelle tilfælde kan<br />

overføres, og hvor der i givet fald opstår problemer ved overgangen til imperative<br />

programmeringssprog. Dette vil vi gøre ved at betragte et simpelt konkret<br />

eksempel.<br />

Derudover søger vi at afgøre, hvor anvendelig vores udviklede metode er i en<br />

faktisk implementation. Specielt vil vi diskutere metodens egnethed i forbindelse<br />

med større programmer.<br />

Den resterende del af rapporten er struktureret således:<br />

Afsnit 3 beskriver size-<strong>change</strong> termination for funktionelle sprog med henblik<br />

på at give en basis for sammenligning med den imperative version,<br />

som det er sigtet at udvikle. Afsnit 3 er en sammenfatning af de for os<br />

væsentlige dele af artiklen [POPL01].<br />

I afsnit 4 beskrives syntaks og semantik for det imperative sprog som tjener<br />

til at illustrere size-<strong>change</strong> termination for imperative sprog. Dette er<br />

kommenteret med overvejelser om centrale egenskaber ved sproget.<br />

1 Vi vil overalt i denne rapport indskrænke os til at tale om første ordens programmeringssprog.<br />

3

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!