Real World Haskell

Darmstadt.pm | Mailingliste | Treffen, Veranstaltungen | Leute | Links | FAQ | ... Hilfe | Änderungen | Einstellung: | Impressum |
| Seite verändern

Real World Haskell Bryan O'Sullivan John Goerzen Don Stewart O'Reilly, 2008

Funktionale Programmierung - und damit auch Haskell - war immer anders: sehr elegant, aber eher etwas für Wissenschaftler; von theorieverliebten Sprachdesignern konzipiert, aber selten in kommerziellen Produkten zu finden. Ein Blick in die Literatur spiegelte dies. Findet man in Büchern über C, Java oder Perl Programmbeispiele, mit denen man Dateien verwalten kann, Texte mit Hilfe regulärer Ausdrücke durchsuchen oder Web-Anwendungen erstellen kann, findet der Leser in Büchern über Haskell viel über Monaden, Typsysteme und als Beispiel wird dann ein Fraktal gezeichnet.

In den letzten Jahren haben die funktionalen Sprachen aber ihr Nischendasein verlassen; Trendsetter waren hier sicherlich Erlang mit seinem Konzept der Nebenläufigkeit oder F# auf der .Net-Plattform. Aber auch Haskell hat sich gemacht. Viele Features, die für die Real-World-Entwicklung notwendig sind, sind nun Standard für den Glasgow Haskell Compiler, mit Cabal ist ein gutes Werkzeug für das Deployment zu finden und die Hackage Datenbank liefert für viele Aufgabenstellungen die benötigten Bibliotheken.

Es wird also Zeit, dass sich diese Entwicklung auch in der Literatur niederschlägt. Und genau diese Aufgabe erfüllt Real World Haskell, indem es Theorie und praktische Programmierung verbindet: Einerseits wird die Sprache in ihrem gesamten Umfang und Tiefgang eingeführt, andererseits werden in vielen Programmierbeispielen viele Ideen für den Programmieralltag mitgegeben. Mein Lieblingskapitel ist zum Beispiel das 22te Kapitel, in dem ein podcatcher entwickelt wird. Hier werden viele Techniken vorgestellt, mit denen ich mich in der letzten Zeit viel beschäftigt habe. Das Buch hat aber viele weitere Fallbeispiele: JSON-Verarbeitung, Barcode-Erkennung, Bloomfilter und zeigt damit, wie allgemein Haskell einsetzbar geworden ist.

Wenn ich das Buch in einem Wort beschreiben soll, dann würde ich "Desugaring" wählen. In vielen früheren Büchern wurden Monaden als theoretisches Konzept eingeführt und besprochen und zum Schluss die do-Notation als syntaktischer Zucker für die Programmierung vorgestellt. Real World Haskell geht den anderen Weg: Zunächst wird in einem Kapitel I/O eingeführt und die Unterscheidung von reinem (ohne Seiteneffekte) Code und unreinem Code (mit Seiteneffekten) diskutiert. Das Thema I/O wird mit einem Beispiel zur Dateiensuche dann in einem anderen Kapitel vertieft. In einem weiteren Kapitel wird die Entwicklung eines Parsers besprochen. Dann werden Monaden eingeführt und die Verwendung von Monaden zieht sich wie ein roter Faden durch die zweite Hälfte des Buchs. Nach der ausführlichen Besprechnung wird letztendlich gezeigt, was eigentlich hinter der do-Notation steckt - Desugaring.

Die ausführliche Dikussion von Praxisbeispielen und das Erklären der Theorie hat natürlich ihren Preis: das Buch hat knapp 700 Seiten. Wenn ich daran denke, dass ich vor einem Jahrzehnt Haskell mit den 64 Seiten 'A Gentle Introduction to Haskell' von Paul Hudak lernte, und danach das Gefühl hatte, die Sprache in ihrer Gesamtheit gut verstanden zu haben, habe ich nun die zehnfache Menge an Seiten vor mir. Da in den Fallstudien gerne ein paar neue Klassen vorgestellt werden, ist das Querlesen nicht ganz einfach. Beim Lesen der hinteren Kapitel habe ich mich doch recht oft ertappt, wie ich wieder zurückblättern musste.

Vor dem Erscheinen des Buches stellten die Autoren eine Online-Version zur Verfügung und gaben den Lesern die Möglichkeit, einzelne Abschnitte zu kommentieren. Dies führte einerseits zu einer imposanten Liste an Namen bei der Danksagung, andererseits wurden so einige unliebsame Fehler und Unklarheiten gefunden und korrigiert - ein Beispiel, das Schule machen sollte.

Insgesamt halte ich Real World Haskell für ein sehr gelungenes Buch und, wer auch immer Haskell nicht nur als akademische Veranstaltung betreiben will, wird an diesem Buch kaum vorbeikommen.

Happy Haskell Hacking!

Jon Nedelmann