KIF430:Freunde der funktionalen Programmierung (Anfänger): Unterschied zwischen den Versionen

Aus KIF
(Seite angelegt, einige Notizen hinzugefügt)
 
 
Zeile 2: Zeile 2:
== Vorlesungsartige Einführung in Haskell ==
== Vorlesungsartige Einführung in Haskell ==


Vorlesung von Jonas und alle Unterlagen dazu: [http://github.com/FFPiHaskell/]


Unterlagen des Referenten [http://github.com/FFPiHaskell/]
Empfolene Literatur:
 
* Learn You a Haskell For Great Good: [http://learnyouahaskell.com/]
Empfolene Literatur: Learn You a Haskell [http://learnyouahaskell.com/]
* Alligator Eggs (Lambda-Kalkül) [http://worrydream.com/AlligatorEggs/]
* Parallel and Concurrent Programming in Haskell (etwas fortgeschrittener): [http://chimera.labs.oreilly.com/books/1230000000929]




Gründe für Haskell:
Gründe für Haskell:
* immutability (Unveränderlichkeit): Werte können nicht verändert werden
* Immutability (Unveränderlichkeit): Werte können nicht verändert werden
* pure (keine Seiteneffekte)
* Purity (keine Seiteneffekte, es sei denn explizit)
* auf einfache Weise beliebig viele Prozessorkerne nutzen
* Parallelism: Auf einfache Weise beliebig viele Prozessorkerne nutzen
 
* schult, über Seiteneffekte, Global State, logische Denkfähigkeit,... nachzudenken
* schult, über Seiteneffekte, Global State, logische Denkfähigkeit,... nachzudenken
* verbessert Problemlösungsskills
* verbessert Problemlösungsskills
* verbessert Programmierung
* verbessert Programmierung
* sehr gut für Parser geeignet
* sehr gut für Parser geeignet


Negatives:
Negatives:
* benötigter Speicherplatz unbekannt, tendenziell mehr
* benötigter Speicherplatz schwerer zu ermitteln, tendenziell etwas mehr
->Optimierung schwieriger
->Optimierung schwieriger
* interer Stack-Overflow möglich
* interer Stack-Overflow möglich (per Compiler-Flag zu beheben)
* ungünstig, falls man pro Zeile Code bezahlt wird
* ungünstig, falls man pro Zeile Code bezahlt wird ;-)
 


Für welche Art von Projekten:
Für welche Art von Projekten:

Aktuelle Version vom 29. Mai 2015, 22:30 Uhr

Vorlesungsartige Einführung in Haskell[Bearbeiten]

Vorlesung von Jonas und alle Unterlagen dazu: [1]

Empfolene Literatur:

  • Learn You a Haskell For Great Good: [2]
  • Alligator Eggs (Lambda-Kalkül) [3]
  • Parallel and Concurrent Programming in Haskell (etwas fortgeschrittener): [4]


Gründe für Haskell:

  • Immutability (Unveränderlichkeit): Werte können nicht verändert werden
  • Purity (keine Seiteneffekte, es sei denn explizit)
  • Parallelism: Auf einfache Weise beliebig viele Prozessorkerne nutzen
  • schult, über Seiteneffekte, Global State, logische Denkfähigkeit,... nachzudenken
  • verbessert Problemlösungsskills
  • verbessert Programmierung
  • sehr gut für Parser geeignet

Negatives:

  • benötigter Speicherplatz schwerer zu ermitteln, tendenziell etwas mehr

->Optimierung schwieriger

  • interer Stack-Overflow möglich (per Compiler-Flag zu beheben)
  • ungünstig, falls man pro Zeile Code bezahlt wird ;-)

Für welche Art von Projekten:

  • Programm soll gutlesbar sein und funktionieren
  • nicht! für quick&dirty
  • für stabile, sichere Programme
  • ggf. für nicht-performante Anwendungen (schneller als Java, C-Guru schneller als Haskell-Guru, unter nicht Gurus Haskell schneller)
  • Parallelität einfach implementieren