Nur für 'Thread-Monkeys'

November 15, 2011

Mit dem Titel “The Art of Concurrency” wird ein hoher Anspruch geweckt, der nicht erfüllt wird. Der Untertitel “A Thread Monkey’s Guide to Writing Parallel Applications” wird dem Inhalt schon eher gerecht, aber auch hier gibt es noch einige Kritikpunkte.

In diesem Buch wird die threadbasierte Programmierung von Shared-Memory-Rechnern mit POSIX Threads (pthreads), Windows Threads, OpenMP und mit Intel Thread-Building-Blocks in einer C-ähnlichen-Sprache erläutert. Für Java-Programmierer ist es daher nur bedingt geeignet.

Die theoretischen Grundlagen von Parallelität und Nebenläufigkeit werden nur ganz kurz anhand der PRAM erläutert. Andere Modelle, z. B. das Aktor-Modell, Petri-Netze oder Prozess-Kalküle fehlen völlig. Ebenfalls nichts über “Futures” und “Promises”.

Was der Autor hingegen schön macht ist, wie er erklärt, wie man aus einem Algorithmus für die PRAM threadbasierten Code für Shared-Memory-Architekturen herleitet. Wie man etwas am besten parallelisiert und da aus seiner reichhaltigen Erfahrung schöpft.

Leser mit genügend Interesse an dieser Programmierung finden hier viele Beispiele. Gegner, die behaupten das Code mit Threads und Shared-Memory leicht kompliziert wird und zu nicht wartbarem Code-Chaos führt allerdings auch.

Insgesamt werden 13 Algorithmen (davon 6 Sortierverfahren) parallelisiert. Mir persönlich ist nicht klar, warum die Möglichkeiten der Parallelisierung nicht an 2-3 Beispielalgorithmen gezeigt werden. Was will mir dieses Buch beibringen? Die grundlegenden Algorithmen? Diese werden in anderen Büchern (Cormen, Leiserson, Rivest, etc.) besser und ausführlicher erklärt. Auch ist die verwendete C-ähnliche Programmiersprache didaktisch ungeeignet.

Leider gibt es auch keine Übungsaufgaben im Buch, so dass der Leser leider nicht selber aktiv werden und das Gelernte überprüfen kann.

Als ich dann bei Wikipedia unter “Minimal Spanning Tree” folgendes las “Typically, parallel algorithms are based on Bor’vka algorithm’Prim’s and especially Kruskal’s algorithm do not scale as well to additional processors.” , habe ich mich schon gefragt, warum gerade die letzten beiden im Buch implementiert werden.

Fazit: Der Untertitel beschreibt das Buch recht gut, ein Buch über die Kunst des Programmierens, wie z. B. bei Donald Knuths “The Art of Computer Programming” ist es allerdings bei weitem nicht.

  • Clay Breshears
  • The Art of Concurrency: A Thread Monkey’s Guide to Writing Parallel Applications
  • O’Reilly
  • 2009

Siehe auch die Renzension bei Amazon