Ein sehr guter Programmierer sollte mindestens einmal im Jahr eine neue Sprache lernen, denn Sprache ist ein Weg, das Denken zu erweitern. Immer mal wieder legen O'Reilly bzw. die Pragmatic Programmers einen Titel auf,der vom Konzept und von der Ausführung her weit vor aller anderen IT-Literatur liegt, sozusagen ein Buch aus der nahen Zukunft. Dies ist so ein Juwel, ein Buch welches in 7 Programmiersprachen gleichzeitig einführt und dafür sorgt, dass sich alle 7 ergänzen mit dem Ziel, moderne Programmierkonzepte direkt an der Sprache zu illustrieren, die sie eingeführt hat. Ob es wirklich notwendig ist neue Konzepte wie Funktionale Programmierung statt OOP zu lernen, sei mal dahingestellt. Auch heute noch interessiert die OOP im Bereich Mikrocontrollerprogrammierung oder Automatisierung industrieller Abläufe immer noch nur am Rande, obwohl die OOP angeblich schon wieder Out ist. Und Autos, Waschstraßen oder Fabriken laufen weiterhin so effizient strukturiert und prozedural wie bisher. Auch Linux wird unverschämterweise nur mit C modular entwickelt. Also Vorsicht beim Übernehmen von Guru-Doktrinen. Sie gelten, wenn überhaupt, dann nur für Teilbereiche der Programmierung.
Das Buch führt von der "alten" OO-Programmierung mit Ruby über diverse Konzepte hin zur reinen funktionalen Programmierung, indem es jede Woche eine Sprache einführt, die die neuen Konzepte auf eine andere Weise nutzt. Dabei versucht der Author, den Charakter der Sprachen zu verdeutlichen, indem er sie mit Filmhelden vergleicht. Die einzelnen Stationen sind: Ruby (Mary Poppins, OP für Fans mit einem Hauch FP), Io (Ferris Bueller aus Ferris macht Blau, Coolstmögliches Lisp-artiges OO durch Prototypisierung), ProLog (Rain Man, logische Programmierung ohne OOP oder FP), Scala (Edward mit den Scherenhänden, die eierlegende Wollmilchsau von heute, Mixt OOP mit FP), Erlang (Agent Smith aus Matrix, Brutal-effektive Funktionalisierung mit eigener VM), CloJure (Yoda, ultramächtiges Lisp auf der JVM, kann einfach alles, wenn du die Macht verstehst, Luke) und Haskell (Spock, Die reine Forschung, puristisch und unserer Zeit immer noch weit voraus).
Bei jeder Sprache wird zunächst 1 Tag mit dem Interpreter gespielt, dann 1 Tag Datenstrukturen und Kern-Sprachelemente eingeführt und am 3ten Tag mit einem Kleinprojekt genauer auf das eingegangen, was die Sprache besonders gut von allem weiteren Unterscheidet. Jeder dieser Tage ist heftig, also Steilkurs statt Langweilertutorial. Man wird damit natürlich keine der 7 Sprachen detailliert lernen, man wird überall einmal tief eintauchen und man kann feststellen, was einem besonders liegt. Am Ende hat man dann einen tollen Überblick über alles, was auf uns in den nächsten Jahren zukommt.
Ich fand es toll und inspirierend, quasi die Entwicklungen der letzten 10 und wohl auch der nächsten 5 Jahre im Wirbelwind mitzubekommen.
Das Buch hat aus meiner Sicht 2 Schwächen, die sich aus der Ausrichtung des Autors ergeben:
1. Der Autor versucht, weitgehend unparteiisch zu bleiben und Schwächen wie Stärken der Sprachen mit herauszuarbeiten. Das klappt auch, nur bei Ruby merkt man zu deutlich, dass der Autor eine Ruby-Programmierfirma hat und daher hatte ich ständig den Eindruck einer Ruby-Werbeveranstaltung. Natürlich ignoriert er sowas wie Python, was hier besser gepasst hätte, er kaschiert den steilen Abstieg von Ruby nach dem Rails-Hype und stellt überrascht fest, dass die Ruby-Schwächen quasi unbedeutend sind. Das ganze Kapitel gehört m.E. gar nicht in das Buch, da Ruby statt eines neuen Ansatzes eher die Maximalentwicklung des OOP-Konzeptes darstellt.
2. Der Autor interessiert sich bei Plattformen nur für Sprachen auf der Java Virtual Machine und ignoriert die gesamte Microsoft- und CLR-Welt. Das ist mehr als schade, denn diese Welt beschäftigt sicher einen großen Teil der Programmierer. Statt Rubykuscheln etwas C# / F# hätte die Glaubwürdigkeit des Buches sicher noch erhöht. Statt Io wäre auch JavaScript kein Fehlgriff gewesen, um Prototypisiertes OOP darzustellen.
Trtoz dieser Kritikpunkte finde ich das Buch unbedingt lesenswert und habe es mir nochmals als pdf bestellt. (Und quälte mich 4 Stunden damit, das pdf auf 2 Rechnern und meinen Reader zu authorisieren, verfluchter Ciando-Adobe-DRM-Fuck). Die Deutsche Ausgabe ist hervorragend übersetzt, das Layout sehr angenehm zu lesen und der ganze Ansatz einfach fesselnd.