Sehr viel Haskell, zu wenig funktionale Programmierung
October 15, 2013
Ich habe “Learn You a Haskell for Great Good” zur Auffrischung meiner Haskell-Kenntnisse gelesen. Während meines Studiums in den neunziger Jahren war ich begeisterter funktionaler Programmierer. Meine Diplomarbeit habe ich 1997-98 über „Geometrische Algorithmen in Haskell“ geschrieben.
Seitdem habe ich Haskell allerdings nur noch selten verwendet, weil es in der Praxis immer noch unbekannt ist und Kunden nur sehr ungern Risiken eingehen. Daher habe ich auch eine Menge von Haskell wieder vergessen. Außerdem wurde Haskell auch weiterentwickelt und es sind auch eine Menge neue Sachen hinzugekommen.
Die Programmiersprache Haskell gehört zu den funktionalen Programmiersprachen, während die häufig verwendeten Programmiersprachen Java und C++ zu den imperativen Programmiersprachen gehören. Wenn man Haskell lernt, muss man daher nicht nur eine neue Sprache, sondern ein ganz neues „Programmierparadigma“, eine ganz neue Art zu programmieren lernen.
Während das Buch die Sprache Haskell übergründlich darstellt, bleibt die funktionale Programmierung zu sehr im Hintergrund. Die Klassen Functor, Applicative, Monoid und Monad werden sehr ausführlich dargestellt, während zu wenig Datenstrukturen behandelt werden. Graphen und Graphalgorithmen fehlen völlig und werden nur kurz im Shortest-Path-Kapitel angeschnitten. Und gerade hier haben funktionale Programmiersprachen ihre Schwierigkeiten. Die Vorteile der funktionalen Sprachen beim Argumentieren über Programmeigenschaften, wie „Equational Reasoning“, Programmdeduktion und Korrektheitsbeweise, kommen hingegen zu kurz.
Das Buch ist eine gute Einführung in Haskell, aber man sollte mindestens ein weiteres Buch über die Techniken der funktionalen Programmierung lesen. Der Klassiker damals in den 90ern war von Bird und Wadler „Introduction to Functional Programming“. Da wird die eigentliche funktionale Programmierung sehr viel ausführlicher erklärt. Da gab es aber auch viele Themen von heute, wie z. B. die Monaden noch nicht, so dass da mehr Raum für den eigentlichen Kern blieb, die funktionale Programmierung.
- Miran Lipovaca
- Learn You a Haskell for Great Good!: A Beginner’s Guide
- No Starch
- 2011
Siehe auch die Renzension bei Amazon.