Kurs/Haskell: Difference between revisions
No edit summary |
m (11 revisions) |
||
(8 intermediate revisions by one other user not shown) | |||
Line 1: | Line 1: | ||
<b>Tid</b>: Torsdag 19. mars 2009, kl. 18:15<<BR>> | <b>Tid</b>: Torsdag 19. mars 2009, kl. 18:15<<BR>> | ||
<b>Sted</b>: | <b>Sted</b>: [http://www.ntnu.no/studieinformasjon/rom/?sok=EL6&gr=1&a=S%F8k EL6]<<BR>> | ||
<b>Kursholder</b>: Kjetil Ørbekk<<BR>> | <b>Kursholder</b>: Kjetil Ørbekk<<BR>> | ||
<b>Anbefalte forkunnskaper</b>: Programmering, rekursjon | <b>Anbefalte forkunnskaper</b>: Programmering, rekursjon | ||
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 | Haskell er et rent funksjonelt programmeringsspråk. I funksjonell programmering gir du ikke detaljerte instruksjoner til maskinen. Du setter verdier, og jobber med dem ved hjelp av funksjoner som kan settes sammen på utallige måter. Man forandrer aldri en variabel som har blitt satt. Dette 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: | ||
Line 29: | Line 29: | ||
* 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. | * 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! | * 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! | ||
---- | |||
Materiale fra kurset: | |||
* [http://www.pvv.ntnu.no/~orbekk/pub/haskell/slides.pdf Slides] | |||
* [http://www.pvv.ntnu.no/~orbekk/pub/haskell/files/ Kildekode] | |||
Video fra kurset: | |||
* Del 1: [http://www.pvv.ntnu.no/~oysteini/kurs/2009-03-19-haskell/video-del1-stor.ogg stor (821 MiB)], [http://www.pvv.ntnu.no/~oysteini/kurs/2009-03-19-haskell/video-del1-liten.ogg liten (99 MiB)] | |||
* Del 2: (kommer snart) | |||
* Del 3: (kommer snart) | |||
[http://www.pvv.ntnu.no/~oysteini/kurs/2009-03-19-haskell/haskellplakat.ps Plakat] ([http://www.pvv.ntnu.no/~oysteini/kurs/2009-03-19-haskell/haskellplakat.xcf Gimp-kildefil]) | |||
---- | ---- | ||
__NOTOC__ | __NOTOC__ |
Latest revision as of 22:45, 5 March 2010
Tid: Torsdag 19. mars 2009, kl. 18:15<
>
Sted: EL6<
>
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 dem ved hjelp av funksjoner som kan settes sammen på utallige måter. Man forandrer aldri en variabel som har blitt satt. Dette 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!
Materiale fra kurset:
Video fra kurset:
- Del 1: stor (821 MiB), liten (99 MiB)
- Del 2: (kommer snart)
- Del 3: (kommer snart)