Kundenrezensionen


2 Rezensionen
5 Sterne:    (0)
4 Sterne:
 (1)
3 Sterne:
 (1)
2 Sterne:    (0)
1 Sterne:    (0)
 
 
 
 
 
Durchschnittliche Kundenbewertung
Sagen Sie Ihre Meinung zu diesem Artikel
Eigene Rezension erstellen
 
 

Die hilfreichste positive Rezension
Die hilfreichste kritische Rezension


17 von 18 Kunden fanden die folgende Rezension hilfreich
4.0 von 5 Sternen Von der Kunst der Gleichzeitigkeit - Clay Breshears Einführung in thread-basierte Programmierung
Einleitung

Es ist noch gar noch so lange her, da wurde man als Programmierer von seinen Freunden und Kollegen ein wenig schief angeschaut, wenn man in vertrauter Runde auf die Frage, an was man denn gerade arbeite, geantwortet hat, das man eine Thread-basierte Software entwickle. Viele der Entwickler rümpften zumindest innerlich mit der Nase - lautete doch...
Veröffentlicht am 31. Oktober 2009 von Janne Schulz

versus
5 von 5 Kunden fanden die folgende Rezension hilfreich
3.0 von 5 Sternen Nur für "Thread-Monkeys"
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...
Veröffentlicht am 15. November 2011 von Jörn Dinkla


Hilfreichste Bewertungen zuerst | Neueste Bewertungen zuerst

17 von 18 Kunden fanden die folgende Rezension hilfreich
4.0 von 5 Sternen Von der Kunst der Gleichzeitigkeit - Clay Breshears Einführung in thread-basierte Programmierung, 31. Oktober 2009
Rezension bezieht sich auf: The Art of Concurrency: A Thread Monkey's Guide to Writing Parallel Applications (Taschenbuch)
Einleitung

Es ist noch gar noch so lange her, da wurde man als Programmierer von seinen Freunden und Kollegen ein wenig schief angeschaut, wenn man in vertrauter Runde auf die Frage, an was man denn gerade arbeite, geantwortet hat, das man eine Thread-basierte Software entwickle. Viele der Entwickler rümpften zumindest innerlich mit der Nase - lautete doch der neuste Hype in Sachen paralleler Programmierung und Ereignisverarbeitung "event-based" und nicht (mehr) "thread-based" [1].

Nicht so bei dem Autor Clay Breshears: er hat ein Buch über die Kunst der parallelen Programmierung (genauer: über die "Kunst der Gleichzeitigkeit") geschrieben, in dem er Threads pragmatisch und vollkommen undogmatisch verwendet. Das mag auch damit zusammenhängen, das die modernen Prozessoren durch die Multikern-Technologie zu echter Parallelität fähig sind (soweit dies von dem Betriebssystem und/oder der Programmiersprache unterstützt wird).

Beschreibung

Das Buch beginnt klassisch und wie bei O'Reilly gewohnt: mit einem Kapitel, indem sich der Autor über die anvisierte Zielgruppe Gedanken macht. In diesem Fall richtet sich Clay Breshears an Studenten, professionelle Softwareentwickler und ambitionierte Programmierer, die vor numerischen Algorithmen und theoretischen Überlegungen nicht zurückschrecken. Er führt einige Grundbegriffe der parallelen Programmierung ein, die im weiteren Verlauf des Buches immer wieder auftauchen werden. Er stellt dabei zunächst ganz grundsätzliche Fragen in den Raum und nähert sich so dem "Paradigma" der parallelen Programmierung.
(Keywords: shared-memory, distributed-memory, dividing work, communication, design, locks
Seiten: 18)

Im zweiten Kapitel steht die Frage nach "Was ist denn parallel und was nicht?" im Vordergrund. Er untersucht unterschiedliche Szenarien und versucht diese in parallele Handlungsstränge zu dekomponieren. Wo dies nicht gelingt, erbringt er einen Hinweis auf die Nicht-Parallelisierung des Problems.
(Keywords: task decomposition, granularity, boss-worker, scheduling, data decomposition
Seiten: 21)

Das dritte Kapitel steht ganz im Zeichen von Performanz und Verifikation. Er verdeutlicht die Problematik anhand von Algorithmen, die sich nicht korrekt verhalten und leitet daraus Richtlinien ab, mit denen man einige der kritischen Bereiche umgehen kann.
Neben der korrekten Funktionsweise der Programme untersucht er die Performanz der Algorithmen und interessiert sich dabei besonders für die Verbesserung der Laufzeit (Speedup).
(Keywords: critical section, speedup, conditions
Seiten: 22)

Im vierten Kapitel fasst er die vorherigen Erkenntnisse und Gedanken zusammen und präsentiert acht Grundregeln für ein gutes Design von multithreaded Applikationen.
(Seiten: 7)

Kapitel fünf ist vier Thread-Bibliotheken oder -umgebungen gewidmet, mit denen er in den folgenden Kapiteln die Algorithmen (in verkürzter Form) beschreiben wird. Er unterscheidet zwischen implizitem Threading mit den Vertretern "OpenMP" und "Intel TBB (Thread Building Blocks)" sowie explizitem Threading mit POSIX Threads und Windows Threads by Microsoft.
(Keywords: implicit threading, explicit threading, libraries
Seiten: 11)

Mit dem sechsten Kapitel beginnt der algorithmische und numerische Teil des Buches: die ersten fünf Kapitel dienten der Einführung in die Welt der parallelen Programmierung, nun stellt er konkrete Algorithmen und Probleme vor, wählt dazu eine der Thread-Libraries aus und entwickelt Lösungen für das Problem. Jeder wichtige Algorithmus wird anschließend nach vier Kriterien beurteilt. Die Kriterien lauten:

1. Effizienz
2. Einfachheit ('simplicity')
3. Portabilität und
4- Skalierbarkeit

Er beginnt mit parallelen Summen und Präfix-Suchen.
(Keywords: parallel sum, PRAM algorithm, median
Seiten: 28)

Das siebte Kapitel gilt "MapReduce" - einem Framework ganz ählich wie "divide-and-conquer" o.ä. Zunächst untersucht er das "Mapping" der Daten (und deren Dekomposition) um sich danach auf das "Reduzieren" zu konzentrieren. Im Verlauf des Kapitels wird ein weiterer Mechanismus zur Synchronisierung von parallelen Prozessen vorgeschlagen: das "Barrier Object".
(Keywords: map, reduce, google, barrier object, key-value,
Seiten: 17)

Kapitel acht ist ausschließlich der Sortierung gewidmet. Er stellt mindestens fünf Sortierverfahren vor, samt naiver Implementierung, Verbesserungen und Beurteilung nach dem vier-Kritierien Schema (siehe Kapitel sechs).
(Keywords: bubblesort, odd-even transposition, shellsort, quicksort, radix-sort,
Seiten: 37)

Das Thema des neunten Kapitels ist "Suchen". Er unterscheidet zwischen unsortierten und bereits geordneten Daten und untersucht darauf jeweils eine Such-Strategie.
(Keywords: binary search, sorted, unsorted,
Seiten: 9)

Im zehnten und vorletzten Kapitel werden "Graphen" und für diesen Bereich typische Fragestellungen ("minimal spanning tree" etc.) behandelt.
(Keywords: depth-first, shortest path, rubik's cube, breadth-first, floyd, kruskal, prim
Seiten: 24)

Das letzte Kapitel ist eine Vorstellung von Tools, die bei der Entwicklung und Programmierung von parallelen Applikationen helfen sollen.
(Keywords: gdb, dbx, debugger, hot-spots,
Seiten: 6)

Meinung

Der Autor hat einen angenehm zu lesenden, professionellen und präzisen Schreibstil. Er vermittelt seine langjährige Erfahrung glaubhaft, ohne jedoch überheblich oder abgehoben zu wirken. Das Buch im Ganzen und jedes Kapitel im Einzelnen ist klar gegliedert und wirkt in seiner Struktur aufgeräumt und übersichtlich. Die Probleme sind gut beschrieben, und dort wo nötig, illustriert. Grafiken sind sparsam aber effektiv eingesetzt.
Clay Breshears führt kompetent in die Thematik ein und wird ihrer Komplexität in dem Rahmen, den er sich für das Buch gesetzt hat, gerecht. Leider sind viele Beispiele zu "akademisch", d.h. er arbeitet mit Datenstrukturen, die recht klein dimensioniert (aber damit auch anschaulicher) sind. So ist es nicht so nicht ganz einfach, davon auf reale Probleme zu schließen, um ein Gefühl
für die Verbesserungen durch parallele Algorithmen zu bekommen. Auch fehlen dem Buch ein paar Benchmarks, die er in einem kleine Testszenario ermittelt hat und deren Ergebnisse er kommentiert.
Obwohl er bei Intel arbeitet, gibt es leider auch keine Informationen zur Architektur von Multikern-Prozessoren, die das Verständnis u.U. noch weiter gefördert hätten.

Fazit

Das er ein "Freund der Sortierung" ist, lässt sich bereits an der Seitenzahl der Kapitel ablesen. Aber das tut dem runden Eindruck, den das Buch hinterlässt, keinen Abbruch. Die zuvor annvisierte Leserschaft wird mit dem Buch von Clay Breshears bestens zurechtkommen und interessierten Neulingen bietet er eine kompetente Einführung in die Thematik. Dieses Buch hat mich zu einigen neuen Ideen inspiriert - weshalb ich es nicht zuletzt deshalb empfehlen kann.

--

[1]:
Dieser Eindruck wird durch die imposante Anzahl von gefundenen Seiten und Dokumenten bestätigt, wenn man an Google eine Suchanfrage mit "thread-based vs event-based" schickt. Meine letzte Anfrage ergab ca. 59 Millionen Seiten!
(30.10.2009, 19:00 Uhr).
Helfen Sie anderen Kunden bei der Suche nach den hilfreichsten Rezensionen 
War diese Rezension für Sie hilfreich? Ja Nein


5 von 5 Kunden fanden die folgende Rezension hilfreich
3.0 von 5 Sternen Nur für "Thread-Monkeys", 15. November 2011
Rezension bezieht sich auf: The Art of Concurrency: A Thread Monkey's Guide to Writing Parallel Applications (Taschenbuch)
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.
Helfen Sie anderen Kunden bei der Suche nach den hilfreichsten Rezensionen 
War diese Rezension für Sie hilfreich? Ja Nein


Hilfreichste Bewertungen zuerst | Neueste Bewertungen zuerst

Dieses Produkt

The Art of Concurrency: A Thread Monkey's Guide to Writing Parallel Applications
EUR 29,54
Auf Lager.
In den Einkaufswagen Auf meinen Wunschzettel
Nur in den Rezensionen zu diesem Produkt suchen