Die Bücherseite stellt dieses Mal Bücher für fortgeschrittene Programmierer vor. Der erste Titel beschäftigt sich mit der Python-Praxis, der zweite mit Parallelprogrammierung in der Sprache Haskell.
In Python programmieren ist die eine Sache, das Ergebnis vernünftig zu dokumentieren, zu testen und an Anwender zu verteilen eine andere. “The Hacker’s Guide to Python” von Julien Danjou möchte diese zweite Seite der Python-Entwicklung beleuchten und richtet sich an Entwickler mit Erfahrung, denen die wichtigsten PEPs (Python Enhancement Proposals) geläufig sind.
Python professionell
Danjous Erfahrungen mit Python resultieren aus der Mitarbeit im Open-Stack-Projekt, dessen Umfang nach einer ausgefeilten Entwickler-Policy verlangt. Von dieser persönlichen Warte aus soll das englischsprachige Buch seinen Lesern einen effizienteren Umgang mit der Programmiersprache ermöglichen, zum Beispiel beim Dokumentieren. Danjou zeigt am Beispiel des Tools Sphinx, wie sich die für viele eher lästige Tätigkeit halbwegs automatisieren lässt.
Dem ebenfalls gern vernachlässigten Thema Testing widmet Danjous Buch ein ganzes Kapitel zu Unittests. Es zeigt, wie Entwickler Teststrukturen anlegen, die Tools aus dem Nose-Package einsetzen und Beispielklassen sowie Methoden auf Basis des Moduls Unittest2 erzeugen. Das vorgestellte Fixture-Modul erlaubt es, Objekte, Klassen und Pfade temporär für die Tests zu verändern, mit Mock-Objekten und dem Paket Testscenarios lassen sich verschiedene Testfälle durchspielen.
Weitere Kapitel stellen Pythons Ansatz zur funktionalen Programmierung vor und geben Tipps rund um Performance-Optimierungen, etwa zu Zero Copy und Py-Py. Auch auf die Frage, wie Python-Anwendungen trotz Global Interpreter Lock (GIL) skalieren, geht der Autor ein – die passenden Stichworte: Event-getriebene Architektur und Multiprocessing. Die Codebeispiele eignen sich für die Python-Versionen 2.7 und 3.3.
Einsteiger lässt das Buch vermutlich ratlos zurück, routinierte Python-Entwickler hingegen finden darin viele Anregungen, um sich die tägliche Arbeit zu vereinfachen oder sie schlicht nachhaltiger zu strukturieren.
Info
Julien Danjou
The Hacker’s Guide to Python
https://julien.danjou.info, 2014
290 Seiten
36 Euro (E-Book ab 21 Euro)
ISBN 9781304819246
Haskell parallel
Simon Marlow, Entwickler des parallelen Laufzeitsystems des Glasgow Haskell Compilers, hat ein Buch zur Parallelprogrammierung veröffentlicht. Das englischsprachige Werk “Parallel and Concurrent Programming in Haskell” hat der Verlag unter http://chimera.labs.oreilly.com/books/1230000000929/ zum kostenlosen Lesen online gestellt. Auf über 300 Seiten beschreibt der Autor Techniken für die Multicore- und Multithreading-Programmierung mit Haskell.
Das Buch besteht aus zwei Teilen: Zuerst stellt Simon Marlow in “Parallel Programming” die Techniken vor, die Programme schneller laufen lassen, indem sie die CPUs optimal ausnutzen. Auf den gut hundert Seiten erfährt der Leser vieles zu Evaluationsstrategien und Modularisierung von parallelem Code. Er begegnet aber auch asynchronen Aufrufen, Datenfluss-Parallelität, Pipelining sowie Operationen auf Arrays mit der Repa-Bibliothek. Mit dem Rechnen auf der GPU endet der erste Teil.
Der zweite Teil ist mit “Concurrent Programming” überschrieben. Darin widmet sich Marlow Programmen, die viele Interaktionen eingehen. Beginnend mit der Thread-Erzeugung beschäftigt er sich mit I/O, Datenkanälen zwischen Threads, Exceptions in Threads, dem Unterbrechen von Threads und Software Transactional Memory. Zuletzt folgt ein Kapitel zum verteilten Programmieren mit Haskell. Überlegungen zum Debugging und Tuning von Concurrent-Programmen runden das Buch ab.
Dieser Band ist voll von lauffähigen Beispielen, die aufgrund der Ausdruckskraft von Haskell die Funktionalität kurz und verständlich auf den Punkt bringen. Unter anderem implementiert Simon Marlow mehrere Algorithmen zur Shortest-Path-Ermittlung oder zum Lösen von Sudoku, aber auch einen Chatserver oder ein Message-Passing-Framework.
Das Buch eignet sich für den Haskell-Anwender, der die volle Mächtigkeit seiner Programmiersprache entdecken und entfalten will. Anhängern anderer Sprachen zeigt es, welche Parallel- und Multithreading-Abstraktionen notwendig sind, um moderne Hardware optimal und fehlerfrei anzusprechen.








