IT-Universitetet i København
 
  Tilbage Kursusoversigt
Kursusbeskrivelse
Kursusnavn (dansk):Programmeringssprog, fortolkere og oversættelse 
Kursusnavn (engelsk):Programming Languages, Interpreters and Compilers 
Semester:Forår 2003 
Udbydes under:cand. it, softwareudvikling (swu) 
Omfang i ECTS:7,50 
Kursussprog:Dansk 
Kursushjemmeside:https://learnit.itu.dk 
Min. antal deltagere:
Forventet antal deltagere:24 
Maks. antal deltagere:40 
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 på forhånd. Det er en fordel men ingen forudsætning at have fulgt kurset Funktionelt Design og Programmering. 

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ænespecifikt
sprog. Kursets første hovedemne er brugen af grammatikker og syntaksanalyse til at beskrive domænespecifikke 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, for eksempel om
konstruktion af en oversætter for et model-programmeringssprog. 

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

 

Litteratur udover forskningsartikler:Lecture notes: Programming Language Concepts, by Peter Sestoft, IT-C 2003.

Lecture notes: Basics of Compiler Design, by Torben Mogensen, DIKU 2002.

En god introducerende bog om Standard ML er Hansen og Rischel, Introduction to Programming Using SML, Addison-Wesley 1999.