Nada

2D1370, Funktionell programmering, 4 poäng

Allmän kursbeskrivning

När man programmerar en dator på traditionellt sätt, i ett imperativt (av latinets imperare, beordra) programspråk som t ex Pascal skriver man en följd av kommandon som datorn skall utföra. Dessa kommandon ändrar normalt ofta delar av de data som ligger i datorns minne, programmets variabler får nya värden. Datorns primärminne används både för att lagra kommandoföljden och för olika sorters variabler. Detta gäller även vid programmering i en objektinriktad stil.

För att förstå ett sådant program måste man tänka sig in i vad som händer när programmet körs, ett kommandos effekt beror ofta av flera variablers värde, dvs vad som tidigare hänt. Man säger att tidigare kommadon har haft sidoeffekter. Dåligt skrivna imperativa program blir därför svåra att förstå eftersom många variablers värden är relevanta.

Inom matematiken används funktioner för att beskriva sambandet mellan en mängd tänkbara värden, argumenten, och motsvarande resultat för varje argument. Ett program kan på liknande sätt ses som en beskrivning av hur en mängd tänkbara indata ger som resultat motsvarande utdata. Det är därför möjligt att instruera en dator med funktionella programspråk, språk med funktionsdefinitioner utan sidoeffekter. I denna kurs använder vi ett modernt sådant språk med datatyper, Haskell. Flera av laborationerna är grafiska.

Funktionella program är ofta roliga att skriva och blir korta och eleganta, bland annat därför att man i regel konstruererar och/eller använder funktioner som har funktioner som argument eller funktioner som har funktioner som resultat. Programmen är lätta att förstå och det är även lättare att bevisa att de gör vad de skall göra, eftersom ett funktionellt uttryckssätt liknar en specifikation av programmeringsuppgiften.

I kusen studeras också likheter och skillnader mellan funktionell programmering och andra sätt att programmera; traditionell imperativ programmering, objektinriktad imperativ programmering och logikprogrammering.

De nyvunna kunskaperna ger perspektiv på programmering och förmåga att använda funktionell programmeringsstil även med traditionella språk.


Kursen är ny och ges första gången i period 4 våren 2001. Den är avsedd i första hand för D-teknologer som inte har läst funktionell programmering (Scheme) i årskurs 1.

Aktuell kursomgång: period 4 00/01

Kursledare: Leif Kusoffsky
Datorpostadress(er): lky@nada.kth.se

Fiktiv tenta.

Tenta 20001 maj.

Tenta 2001 augusti (ps) Tenta 2001 Augusti (pdf)

Kursanalys.

Studiehandbokstexten.

^ Upp till Nadas kurser .


Sidansvarig: <lky@nada.kth.se>
Senast ändrad 16 augusti 2000
Tekniskt stöd: <webmaster@nada.kth.se>