IT-Universitetet i København
 
  Tilbage Kursusoversigt
Kursusbeskrivelse
Kursusnavn (dansk):Programmeringssprog: Fortolkere og oversættere 
Kursusnavn (engelsk):Programmering languages: Interpreters and translators 
Semester:Forår 2002 
Udbydes under:cand. it, softwareudvikling (swu) 
Omfang i ECTS:7,50 
Kursussprog:Dansk 
Kursushjemmeside:https://learnit.itu.dk 
Min. antal deltagere:10 
Forventet antal deltagere:
Maks. antal deltagere:30 
Formelle forudsætninger:Grundlæggende programmering og desuden et kursus der bygger videre på programmering, for eksempel Objekt-orienteret programmering, Operativsystemer og maskinnær programmering, Introduktion til Algoritmer og Datastrukturer, Parallelle systemer. Det er en stor fordel at kende mere end ét programmeringssprog. 
Læringsmål:Gennemførelse af kurset vil give dig disse kvalifikationer:


  • Du skal kunne læse og konstruere leksikalske og syntaktiske beskrivelser af kildesprog. Du skal kende til regulære udtryk, grammatikker og grammatikklasser.

  • Du skal kunne konstruere en syntaksanalysator ud fra en grammatik ved hjælp af givne værktøjer. Du skal kende til abstrakt syntaks (dvs. intern repræsentation af kildeteksten) og kunne udvide syntaksanalysatorer til at konstruere abstrakte syntakstræer.

  • Du skal kunne beskrive programudførelse (dynamisk semantik) ved hjælp af begreberne omgivelse, værdi, continuation og exception.

  • Du skal kunne formalisere programudførelse ved konstruktion af en fortolker.

  • Du skal kunne beskrive programmers velformethed (statisk semantik) ved hjælp af begreberne typesystem og typetjek.

  • Du skal kunne beskrive simple abstrakte datamaskiner med begreberne instruktion, register, evalueringsstak, omvendt polsk notation, returstak og aktiveringsposter (kontekststak).

  • Du skal kunne oversætte programmer til maskinkode for en simpel abstrakt datamaskine.
 
Fagligt indhold:I teknologisk innovative projekter skal man undertiden opfinde, beskrive og håndtere ikke-trivielle dataformater, f.eks. specialiserede web-skripts, konfigureringsdata og lignende. Jo mere betydning man lægger ind i sådan et dataformat, jo mere ligner det et specialiseret programmeringssprog, ofte kaldet et domæne-specifikt
sprog. Kursets første hovedemne er brugen af grammatikker og syntaksanalyse til at beskrive domæne-specifikke sprog, brugen af abstrakt syntaks til repræsentation af programmer, og brugen af syntaksanalyse til systematisk omsættelse fra tekst til intern repræsentation.

Der findes forskellige slags programmeringssprog: imperative sprog (f.eks. C), objekt-orienterede sprog (f.eks. Java, Smalltalk), og funktionssprog (f.eks. Lisp, Scheme, Standard ML); statisk typede sprog (Java, Standard ML) og dynamisk typede sprog (Lisp, Scheme). Kursets andet hovedemne er at belyse de forskellige slags sprog ved hjælp af fortolkere, dvs. programmer der udfører andre programmer.

Et program skrevet i f.eks. C, Java eller Standard ML skal oversættes til maskinkode før det kan udføres på datamaskinen. Oversættelsen sker typisk i faser: syntaksanalyse, statiske tjek (typetjek), og generering af maskinkode. Kursets tredje hovedemne er statiske tjek og generering af maskinkode til (abstrakte) maskiner, herunder Java Virtual Machine eller Microsoft Intermediate Language (en del af .NET platformen).

Kurset bruger funktionssproget Standard ML til at præsentere de forskellige emner, da det er særlig velegnet til dette formål. Du skal altså også lære Standard ML i dette kursus. 

Læringsaktiviteter:

Forelæsninger, ugentlige opgaver, øvelser med øvelsesvejleder.

Det er muligt efter kurset at lave et fireugersprojekt om
konstruktion af en oversætter for et model-programmeringssprog.
 

Eksamensform og -beskrivelse:X. experimental examination form (7-scale; external exam), 13-skala, Intern censur

Skriftlig eksamen med bøger, noter osv. men uden datamat.  

Litteratur udover forskningsartikler:<STRONG>NB: Vent med at købe denne bog:</STRONG> Friedman, Haynes, Wand: Essentials of programming languages, MIT Press 2001. Denne bog benytter Scheme, ikke Standard ML, men det forsøger vi at rette op på med noter og forelæsningsplancher (på engelsk).

<STRONG>Du kan roligt købe denne:</STRONG>En god introducerende bog om Standard ML er Hansen og Rischel, Introduction to Programming Using SML, Addison-Wesley 1999.