Über den Tellerrand geschaut: Die kommende Software-Revolution ist Concurrency
In einer Vorabversion seines Artikels „The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software“ kündigt Herb Sutter eine neue Software-Revolution an, mit interessanten Konsequenzen für die künftige Arbeit von Software-Entwicklern. Eine Hauptrolle spielt dabei das Thema Concurrency (Nebenläufigkeit). Zum Teil würden sich gegenwärtige Entwicklungen sogar umkehren. Hat er Recht?
Herb Sutter, bekannt als Softwarearchitekt bei Microsoft, Mitglied des ISO C++-Standardisierungskomitees und Autor zahlreicher Bücher, widmet sich in einem Artikel dem Concurrency-Thema. Neueste Entwicklungen im Hardware-Bereich würden Concurrency zu einem Hauptthema der kommenden Jahre und Jahrzehnte machen, mit dramatischen Konsequenzen für die Art und Weise, wie Software entwickelt wird. Herb zieht einen Vergleich zur OO-Revolution der letzten 20 bis 30 Jahre und konstatiert, dass neben Concurrency auch weitere Themen an Bedeutung gewännen, von denen es (fast) niemand erwarte.
"The vast majority of programmers today don’t grok concurrency, just as the vast majority of programmers 15 years ago didn’t yet grok objects."
(H. Sutter, im Artikel „The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software“)
Jahrzehntelang habe, so Herb, die Performance von Software durch Leistungssteigerungen bei der Hardware verbessert werden können, oft ohne entsprechende Maßnahmen bei der Software selbst. Performance-Tuning habe nur in speziellen Teilbereichen eine Rolle gespielt, meistens wäre schnellere Hardware schneller und billiger verfügbar gewesen als bessere Algorithmen. Diese Zeit, gekennzeichnet als „Free Lunch“, sei nun vorbei.
Ausgangspunkt seiner Argumentation ist der aktuelle Stand der Hardware-Entwicklung, deren exponentieller Verlauf in manchen Bereichen an Grenzen gestoßen sei. So gebe es derzeit keinen 10GHz-Prozessor, nicht einmal einen mit 4 GHz. Eine entsprechende Ankündigung für 2005 habe Intel zurückgenommen. Auch die Optimierung der Befehlsausführung pro Prozessortakt stoße an Grenzen, die nur auf Kosten einer nachvollziehbaren Ausführungssequenz überschritten werden könnten. Dagegen seien andere Entwicklungsrichtungen, wie die Vergrößerung der Caches, ungebrochen.
Eine neue, viel versprechende Entwicklungsrichtung liege in Multiprozessor- und Multicore-Systemen, deren Nutzen nur durch Concurrency, insbesondere in Form von Multithreading, ausgenutzt werden könne. Dabei seien entsprechende Compileroptionen, verbunden mit Optimierungen, nicht ausreichend. Stattdessen sei ein höheres Programmiermodell als das gegenwärtiger Programmiersprachen erforderlich, der Aufwand für die Programmierung werde ansteigen. Parallel dazu werde auf längere Sicht das Thema Performance seine alte Bedeutung zurückgewinnen.
Die in dem Artikel dargestellten Entwicklungen im Hardware-Bereich sind unstrittig. Tatsächlich lassen sich Taktzyklen nicht endlos in die Höhe schrauben – und es gibt eine gewisse Tendenz zu Multicore-Systemen, die mehrere CPUs in einem Prozessor vereinen. Doch Herbs Argumentation hat Schwächen: Er selbst nennt Trends in der Hardware-Entwicklung, die mit (automatischen) Performance-Gewinnen einhergehen, z.B. die Vergrößerung der Prozessor-Caches. Es ist schwer einzuschätzen, ob diese exponentiell verlaufende Entwicklung die Nichtverfügbarkeit immer höherer Taktraten kompensieren kann? Vor diesem Hintergrund ist es fraglich, ob z.B. Speicher-Performance erneut dieselbe Bedeutung wie in früheren Jahrzehnten haben wird. Herb stellt außerdem die These auf, dass es Aufgabe der Entwickler sein werde, Applikationen multithreading-fähig zu machen. Diesen Punkt führt er kaum weiter aus. Es ist durchaus denkbar, dass hier entsprechende Reengineering-Werkzeuge oder Compiler automatisch potentielle Deadlocks und zu synchronisierende Einheiten erkennen und den Programmierer hier entlasten. Dass das Thema Concurrency insgesamt an Bedeutung gewinnen wird, halten wir für eine zutreffende Einschätzung – ob es nun durch Werkzeuge (Generatoren?) gelöst wird und/oder von Hand. Doch bilden Sie sich selbst ihr Urteil.
Der für das Dr. Dobbs Journal und das C/C++ User's Journal angekündigte Artikel steht als Vorabversion unter:
http://www.gotw.ca/publications/concurrency-ddj.htm



