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.
Læringsmål
En studerende, der fuldt ud har opfyldt kursets mål, vil kunne:
- 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.
Sidst opdateret
29. april, 2022