Kurs/Haskell: Difference between revisions

From Programvareverkstedet
No edit summary
(omformulering)
Line 6: Line 6:
De fleste programmeringsspråk er såkalte imperative språk. Man bruker variabler og operasjoner for å få datamaskinen til å gjøre det man vil.
De fleste programmeringsspråk er såkalte imperative språk. Man bruker variabler og operasjoner for å få datamaskinen til å gjøre det man vil.


Haskell er et rent funksjonelt programmeringsspråk. I funksjonell programmering forteller du ikke datamaskinen hvordan den skal gjøre noe, du forklarer bare hva resultatet skal være. Det er bedre og enklere på alle måter<<[[FootNote]](Hvis du er uenig kan vi slåss etter kurset :-))>>.
Haskell er et rent funksjonelt programmeringsspråk. I funksjonell programmering gir du ikke detaljerte instruksjoner til maskinen. Du setter verdier, og jobber med den ved hjelp av funksjoner som kan settes sammen på utallige måter. Man forandrer aldri en variabel som har blitt satt. Det er bedre og enklere på alle måter<<[[FootNote]](Hvis du er uenig kan vi slåss etter kurset :-))>>.


Her er et eksempel på to programmer som summerer alle tallene fra 1 t.o.m. 42:
Her er et eksempel på to programmer som summerer alle tallene fra 1 t.o.m. 42:

Revision as of 11:44, 4 March 2009

Tid: Torsdag 19. mars 2009, kl. 18:15<
> Sted: Ikke fastsatt ennå<
> Kursholder: Kjetil Ørbekk<
> Anbefalte forkunnskaper: Programmering, rekursjon

De fleste programmeringsspråk er såkalte imperative språk. Man bruker variabler og operasjoner for å få datamaskinen til å gjøre det man vil.

Haskell er et rent funksjonelt programmeringsspråk. I funksjonell programmering gir du ikke detaljerte instruksjoner til maskinen. Du setter verdier, og jobber med den ved hjelp av funksjoner som kan settes sammen på utallige måter. Man forandrer aldri en variabel som har blitt satt. Det er bedre og enklere på alle måter<<FootNote(Hvis du er uenig kan vi slåss etter kurset :-))>>.

Her er et eksempel på to programmer som summerer alle tallene fra 1 t.o.m. 42:

I et imperativt språk:

total = 0;
for (int i = 0; i <= 42; i++)
  total = total + i;

I Haskell:

total = sum [1..42]

Hvis du synes dette høres interessant ut, må du gjerne komme på kurset. Det kommer til å være tre deler:

  • I første del skal jeg forklare mer om funksjonell programmering, hvorfor det er verdt å lære seg, og vise hvordan man kommer i gang med Haskell.
  • I andre del blir det mer avansert Haskell. Det blir mye rekursjon, veldig mange funksjoner og gøyale ting som heter typeklasser og abstrakte datatyper.
  • Siste del blir full av det som er virkelig gøy. Jeg skal prøve å vise frem noe som kalles monads (kan gjerne forveksles med marsvin) og lat evaluering. Det finnes mange typer marsvin, og de kan være enten late eller ivrige. Mye om det i denne delen!