Kurs/Haskell: Difference between revisions

From Programvareverkstedet
No edit summary
m (11 revisions)
 
(9 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>: Ikke fastsatt ennå<<BR>>
<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, og kjekt å kunne litt rekursjon
<b>Anbefalte forkunnskaper</b>: 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.
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 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 28: Line 28:
* 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 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.
* 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:

Plakat (Gimp-kildefil)