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. Nogle af de store
softwarevirksomheder som Microsoft og Google opfatter oversættere
at være så essentielt en del af deres projekter, at de endda
oversætter deres oversættere fra kildekode som del af deres build
processer.
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
- planlægge det påkrævet forlængelser for implementering af ny
funktionalitet baseret på en kravbeskrivelse;
- udvide den formelle grammatik af et programmeringssprog for at
tilføje støtte til nye funktionaliteter
- 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;
- forklare kompileringsprocessen for programmer
- identificere situationer i softwareudvikling, hvor teknikker
fra oversættere kan anvendes, og realisere denne anvendelse;
- opnå ovennævnte resultater som del af et gruppe arbejde 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) Oversætter for programmeringsprog, og abstrakte maskiner som
mål for oversættere;
(2) Intermediate representationer og deres indflydelse på
oversættelsen;
(3) Lexing, parsing, kodeanalyse, kodegenerering, og optimeringer.
Projektet er baseret på en state of the art oversætterrammeværk for
realistiske programmeringssprog
Sidst opdateret
06. august, 2020