Oversætterkonstruktion
Overordnede kursusmål
Oversættere bidrager til pålideligheden af softwaresystemer med hjælp af analyser og optimeringer af systemets kode, og ved at sikre egenskaber af de genererede programmer. Mange IT-virksomheder (hereunder f.eks. Google, Facebook og Microsoft) opretter og vedligeholder compilere til nye og eksisterende programmeringssprog.
Kurset underviser i teknikker som bruges til at effektiv implementere moderne programmeringssprog, og til at sikre pålideligheden af de genererede programmer. Vi behandler grundlæggende teknikker i moderne oversættere, fra implementering over optimeringer til køretids understøttelse for nye hardwarearkitekturer. I kurset arbejder de studerende i gruppe med at implementere en oversætter for et realistisk programmeringssprog.
See course description in English
Læringsmål
- forklare oversætternes bidrag til pålidelighed af softwaresystemer;
- forklare strukturen af optimerende oversættere og funktionaliteten af de forskellige faser;
- forklare relationen mellem højtniveaussprog, intermediate representation, analyser, og optimeringer;
- forklare processen af code generering for moderne computer arkitekturer, herunder virtual machines
- udvide en compiler for at tilføje nye funktionaliteter til et programmeringssprog
- anvende moderne værktøjer til implementering af oversættere og forklare deres funktionalitet;
- implementere en oversætter for et realistisk programmeringssprog, eller udvide en eksisterende oversætter;
- opnå ovennævnte resultater som del af et gruppe projekt men på en sådan måde at de individuelle bidrag kan identificeres; og
- kommunikere de opnåede resultater på en klar og præcis måde i en standard form for teknisk rapport.
Kursusindhold
Kurset dækker tre hovedemner:
(1) Kompileringsprocessen: fra high-level programmeringssprog til hardwarearkitekturer og virtuelle maskiner;
(2) Intermediate representationer og deres indflydelse på oversættelsen;
(3) Lexing, parsing, kodeanalyse, kodegenerering, og optimeringer.
Kursusprojektet kræver at udvide en eksisterende compiler-framework for at understøtte mere avancerede programmeringssprogsfunktioner.
Anbefalede forudsætninger
02141/02157, De studerende forventes at være fortrolige med grundlæggende datavidenskabelige begreber som inferensregler, regulære udtryk og kontekstfrie grammatiker. Denne baggrund kan opnås i kurset 02141. De studerende skal kunne udtrykke sig flydende i mindst et programmeringssprog; erfaring med funktionel programmering (især med F#) anbefales stærkt. Denne baggrund kan opnås i kurset 02157.
Undervisningsform
Forelæsninger, teoretiske øvelser og praktiske øvelser.