Und schon wieder eine Rezension
Dieses mal habe ich das Buch Data Crunching – Solve Everyday Problems using Java, Python, and more gelesen. Das Buch ist recht kurz (~150 Seiten), und da die meisten Themen nur Repetition für mich waren, hatte ich es auch in einem Nachmittag durch.

Um eines gleich vorneweg zu nehmen, das Buch ist eher für Einsteiger gedacht, was mir beim Kauf wohl entgangen ist. Allerdings tat es auch gut, gewisse Themen zu repetieren, beispielsweise XSLT oder XPath. Wie der Titel sagt, geht es um die Verarbeitung von Daten. Angefangen wird beim wohl ältesten “Tool” zur Datenverarbeitung, der Unix Shell. In den nächsten Kapiteln geht es dann um Regular Expressions, XML, Binärdaten und SQL. Das Kapitel über Binärdaten war sehr interessant, es wurde zum Beispiel gezeigt, wie man Strings binär speichert, oder möglichst viel Daten auf kleinem Raum unterbringt. Ausserdem weiss ich jetzt, woher die Begriffe Little- and Big-Endian herkommen, nämlich aus der Geschichte von Gullivers Reisen, wo sich die Einwohner über die Frage, ob ein Ei am dicken oder dünnen Ende geöffnet werden, zerstritten haben.
Wie es bei den Pragmatic Programmern üblich ist, wird nicht mittels Theorie vermittelt, sondern immer in Code “gesprochen”. Wobei dies mehrheitlich Python ist. Das im Buchtitel erwähnte Java wird zwar auch verwendet, meistens aber nur um zu zeigen, wie es in Java auch lösbar wäre, obwohl der Code doppelt so lang und unleserlich wird.
Für Regex-Unkundige ist das entsprechende Kapitel sicher sehr empfehlenswert, da eigentlich alles wichtige von Grund auf erklärt wird.
Ausserdem erhält das Buch ein grosses Plus in Sachen Humor. Habe wohl selten so oft gelacht beim lesen von Sachbüchern. Beispielsweise:
$_ is Perl’s way of saying, “whatever the programmer is most likely to care about right now”.
Oder zum Thema Postal Codes:
My postal code, for example, is M5T 2P4; my government’s is K1A 0S5, which is also sometimes written without the space as K1A0S5, and Santa Claus’s is H0H 0H0.
Oder wenn es darum geht, die Grenzen eines Beispielcodes zu zeigen:
What about error handling? What should the program do if the input file doesn’t exist or if the output file can’t be created? [..] And what about handling multiple files at a time? Or merging files? Or solving the problem of world hunger, or getting Joss Whedon’s Firefly back on the air?
Also, für Anfänger sicher zu empfehlen, für etwas geübtere Anwender gut als Repetition. Ein Tipp noch für die HSRler: Das Buch liegt als PDF im SE-Ordner auf dem Skripteserver bereit.
Als nächstes werde ich wohl Interface Oriented Design oder Agile Retrospectives lesen.