Vor einigen Tagen schickte mir netterweise Hannes
Mehnert ein Exemplar seines neuen Buchs
Das Curry-Buch - Funktional programmieren lernen mit
JavaScript (zusammen mit Co-Autoren Jens
Ohlig und Stefanie Schirmer, gerade erschienen bei O‘Reilly, um die
30€). Hannes bin ich immer mal wieder bei der
ICFP über den Weg gelaufen - dort
hat er sich beim ICFP Programming
Contest als
Weltklasse-Programmierer zu erkennen gegeben. Für uns ist das Buch eine gute
Gelegenheit, das Repertoire unseres Blogs um die Kategorie
„Buchbesprechungen“ zu erweitern.
Das Buch richtet sich an aktive JavaScript-Programmierer. Dass
JavaScript Wurzeln in der funktionalen Programmierung hat (auch
wenn diese unter dem dicht belaubten Baum anderer Features der Sprache
manchmal schwer zu sehen ist) ist hinlänglich
bekannt. Entsprechend
unterstützt JavaScript die funktionale Programmierung und wird sie in Zukunft noch
besser unterstützen.
Da JavaScript sich wohl noch lange großer Popularität erfreuen wird,
ist es begrüßenswert, dass sich die Autoren dieses speziellen Themas
annehmen.
Der Name mag erst einmal verwirren, ist aber für Fans der
funktionalen Programmierung leicht erkennbarer Sprachwitz: Haskell
Curry war ein
amerikanischer Logiker, der viele Grundlagen für die heutige
funktionale Programmierung gelegt hat, unter anderem die nach ihm
benannte Currifizierung. Die
Autoren machen den Titel aber noch konsequenter zum Programm: Sie
benutzen das (indische) Kochen als Metapher für die Programmierung und
würzen das Buch mit zahlreichen Erläuterungen zum Thema sowie leckeren
Kochrezepten. Das funktioniert erstaunlich gut: Themen von
Abstraktion bis Kompositialität finden ihr Pendant in der Kochkunst.
Dieses Gimmick hat mich bei der Lektüre allerdings erst einmal
abgelenkt: Immer, wenn ich mich mental auf technische
Erläuterungen zur Programmierung eingestellt hatte, brach ein
Kochrezept den Lesefluss. Tatsächlich ist das Buch auch keine
stringente Einführung in die funktionale Programmierung.
JavaScript-Programmierer sollten also nicht erwarten, nach der Lektüre
zu Meistern der funktionalen Programmierung gereift zu sein.
Was die Qualität des Buchs eigentlich
ausmacht, wurde mir erst klar, als ich mich abends aufs Sofa fläzte
und dort weiterlas: Plötzlich fühlte ich mich blendend unterhalten.
Und tatsächlich ist das Buch eine kleine aber feine Parade der
wichtigsten Perlen der funktionalen Programmierung. Dabei geht es um
klassische Anwendungen der Higher-Order-Programmierung, systematische
Abstraktion, Maps und Folds, Rekursion und Monaden. Eine Einführung
in den Lambda-Kalkül und eine Betrachtung des „Typsystems“ von
JavaScript (die allerdings wenig mit funktionaler Programmierung zu
tun hat) sind auch dabei.
Alles unterhaltsam aufbereitet mit Hintergrund-Erläuterungen und eben
den Parallelen zur indischen Küche. Die Beispiele zeigen gut,
wie sich idiomatischer JavaScript-Code mit funktionaler Programmierung
verträgt - und zwar ohne dass erst irgendwelche dicken Frameworks
dazuinstalliert werden müssen. Viele Verweise auf Artikel im
Internet, andere funktionale Sprachen und Paraadigmen
und hilfreiche JavaScript-Frameworks runden das Gesamtbild ab.
Insofern ist das Buch als schöner Appetizer zu sehen: Ebensowenig wie
ein Kochanfänger erwarten darf, nach Lektüre eines Rezeptbuchs
plötzlich zum Meisterkoch abseits der präsentierten Rezepte zu werden,
wäre es zuviel erwartet, eine systematische und konstruktive Einführung in
die funktionale Programmierung vom Curry-Buch zu finden.
(Dafür gibt es andere, wenn auch
langweiligere Bücher.) Kleine Ungenauigkeiten („zusätzliche
Überprüfungen, etwa ob eine Funktion tail-rekursiv ist, erfordern mehr
Rechenzeit“) und ein streckenweise etwas schlampiges Lektorat trüben
das Gesamtbild nur unwesentlich. JavaScript-Programmierer mit
Interesse an der funktionalen Programmierung werden den Kauf des Buchs
also nicht bereuen.