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 ges för tredje (och sista) gången i period 4 våren 2003. Den är avsedd i första hand för D-teknologer som inte har läst funktionell programmering (Scheme) i årskurs 1.

Teknologer som vill tentera under augustiperioden 2004; var god kontakta mig (lky) så vi kan ordna tenamen

enligt överenskommelse.

Aktuell kursomgång våren 2003 (period 4 02/03)

Föregående kursomgång period 4 01/02

Föregående kursomgång period 4 00/01

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

Studiehandbokstexten.

Upp till Nadas kurser .


Sidansvarig: <lky@nada.kth.se>
Senast ändrad 21 februari 2002
Tekniskt stöd: <webmaster@nada.kth.se>