Kursanalys 2D1375 Programspråksimplementation.

Hösten 2000

Kursdata:

Tid : period 1, 2 och delvis period 3 och 4 läsåret 2000-2001.

Poängtal : 4

Kursledare : Leif Kusoffsky.

Examination : Muntlig tentamen i samband med projktredovisning.

Föreläsningar : 1 st. Kursen har varit läskurs.

Antal registerade : 20 st

Kurslitteratur mm : kap 5 tom kap 8 i "Apple: Modern compiler implementation".

Kursen har varit en läskurs för teknologerna. Projektuppgifterna har varit de implementationsuppgifter som finns i dessa kapitel. Dessa kapitel handlar om följande faser i en kompilator:

Typkontroll

Design av aktiveringsposter

Mellankodsgenerering

Modifiering av mellankod

Syntaxanalys behandlas i en annan kurs som är förkunskapskrav till denna kurs, och behandlas även i de fyra första kapitlen i boken. Teknologerna har fått givna lösningar till dessa kapitel, men många och även jag valde att även göra dessa kapitel för att "komma igång".

Läroboken finns i tre varianter beroende på vilket språk som man vill skriva sin kompilator i;

Java, C eller ML. En teknolog har använt Ml, flera stycken C men de flesta Java.

Själv gjorde jag uppgifterna i Java under sommaren 2000.

Avklarad examination: 8 st med betyg 3, 8 st med betyg 5. Examinationsgrad, presttionsgrad 80%. Fler teknologer kommer att anmäla sig för muntlig tentamen under läsperiod 4.

Flera av mina studenter har valt att fortsätta och även göra en färdig kompilator, dvs arbeta från mellankoden till kod för en verklig dator, vilket behandlas i lärobokens kapitel 9 tom 12. Detta räknas som 2D1465 Avancerad individuell kurs i datalogi. En teknolog är färdig även med denna kurs.

Kursen jämfört med året 1999- 2000.

Kursen har givits med samma mål och innehåll som föregående år.

Kursledarens och teknologernas synpukter på denna kurs:

Kursinnehåll : Lite tråkigt att bara komma fram till mellankod. I den jämförelsevis mycket elementära kompilatorintroduktion som jag hade i min nybörjarkurs i imperativ programmering på min föregående arbetsplats började jag med ett mycket rudimentär Java-liknade språk som teknologerna gjorde både syntaxanalys (predikitv parser), kodgenerering (JVM-liknade kod) och en liten tolk, dvs alla faser implementerades för ett mycket litet språk. Studenterna kunde alltså snabbt "köra" små programm. Sedan så utvidigades språket steg för steg och alla faser kompletterades parallellt. Psykologiskt är nog detta betydligt roligare, eftersom man kan "köra" allt mer sofistikerade program i sitt så småningom lite mer sofistikerade programspråk. Jag tyckte själv att detta var så roligt så gjorde så många steg så att mitt språk blev objektinriktat, något som i Apples bok göres först i kapitel 14 i bokens avancerade del. Syftet med kursavnittet var att ge teknologerna perspektiv på programspråks syntax och semantik och att överbrygga gapet mellan programvara och maskinvara.

I denna kurs studerar man ju kompilatorkonstruktion på allvar och det är natuligtvis mycket som talar för att varje fas studeras i tur och ordning på djupet.

Arbetsinsats : Kursen är jobbig med mycket programmering för att få alla detaljer att stämma.

Läroboken : Ganska bra, men detaljer och råd kan vara fel i detaljer. Delar av materialet ganska svårt. Både de språk som skall implementeras ("tiger") och det sätt på vilket kompilatorn skrivs visar Apples förtjusning i funktionella språk. Detta passar mig bra efersom jag tidigare undervisat mycket i ML och Haskell. Det gör att boken är lättast att läsa i, och labbar säkerligen är enklast att göra i, ML och krångligast i C. T ex används listor genomgående, och Apple använder inte alls Vector i Java och kompilatorn skriven i C saknar skräpsamling.

Den lärobok som jag tidigare har erfarehet av är den klassiska "Drakboken", som jag använde när jag för länge sedan hade kompilatorkursen i Luleå.

Teknologerna : Jag tycker att mina studenter har varit duktiga och jobbat bra. Antar att denna kurs främst appelerar till duktiga studenter. När teknologerna redovisat kunskaper och laborationer vid sina muntliga tenamina så har vi också diskuterat kursen. De flesta av de synpukter som jag skrivit ned ovan delas av de flesta av studenterna.