Parallel und agil
Dass das Internet die Art und Weise, wie Menschen leben, denken, arbeiten und ihre Umgebung wahrnehmen, maßgeblich verändert hat, ist eine Binsenweisheit. Davon am meisten betroffen war und ist die IT-Branche, liegt es doch in ihrer Aufgabe, die Wünsche und Anforderungen webaffiner Individuen und Unternehmen zu befriedigen. Das hat zu komplexen Softwarearchitekturen und riesigen Datenmengen geführt – und wer glaubt, dass das Datenaufkommen im Internet über die letzten 20 Jahre weitgehend gleichmäßig gestiegen ist, irrt gewaltig. So sahen Experten für die letzten fünf Jahre eine Datenexplosion um den Faktor 10, und das wird sich wohl auch in den nächsten Jahren exponentiell weiter vervielfachen.
Zur Bewältigung dieser Aufgabe sind die eingeschlagenen Wege verschieden. Mittlerweile gibt es zum Beispiel zahlreiche Verfahren, den Datentransfer softwareseitig zu beschleunigen, auf der Hardwareseite sind etwa Multi-Core- und Many-Core-Plattformen en vogue. Laut den Analysten von IDC sind 2011 bereits die Hälfte der gelieferten Prozessoren Dual-Core-Systeme; Plattformen mit einem Kern werden mit nur noch etwa 10 Prozent Anteil fast zum Nischenprodukt. Doch schon 2013 sollen die Dual-Cores das gleiche Schicksal erfahren. Die Marktforscher sehen dann 30 bis 35 Prozent Quad-Cores und circa 50 Prozent für Systeme mit mehr als vier Kernen.
Heißt das nun, dass sämtliche Software für die neuen Prozessorarchitekturen neu oder umzuschreiben ist? Sicherlich nicht. Allerdings sollten sich Entwickler jetzt mit den zahlreichen Konzepten in der parallelen Programmierung auseinandersetzen, um abwägen zu können, ob sie aus ihren neuen oder bestehenden Applikationen dank der Mehrkernsysteme mehr Leistung herausholen können.
Die Konzepte zur parallelen und nebenläufigen Programmierung – die wichtigsten werden in diesem Heft vorgestellt – sind größtenteils gar nicht so neu. Sie erfahren jedoch durch die mittlerweile bestehenden Hardwarevoraussetzungen eine neue, berechtigte Aufmerksamkeit. Gewisse Vorteile bei ihrer Implementierung haben sicherlich junge Sprachen wie Clojure, Scala und Go, die eben zu einer Zeit entstanden sind, als abzusehen war, dass Moore’s Law zur Verdopplung der Geschwindigkeit der Prozessoren alle 18 bis 24 Monate nur noch bedingt greift. Sie werden teilweise explizit zur Parallelisierung entwickelt. Schwieriger haben es hingegen verbreitete Plattformen wie Java und C++, die den Ballast mehrjähriger Entwicklungen mittragen müssen und dadurch hinsichtlich des Innovationsgrads behäbig erscheinen. Deswegen dauert es bei ihnen länger, die Konzepte paralleler und nebenläufiger Programmierung zu realisieren. Dafür können Anwender frühzeitig auf eine Vielzahl an Bibliotheken zurückgreifen, die es wie Fork/Join bei Java 7 oder Boost.Thread in C++11 endlich in die Standards gepackt haben.
Es ist jedoch nicht allein damit getan, die Beschleunigung nur bei Prozessoren und Programmiersprachen zu suchen. Agile Praktiken tragen ebenfalls zu einer effizienteren und schnelleren Softwareentwicklung bei. Von daher ist es nicht verwunderlich, dass gerade Entwickler von Open-Source-Software versuchen, die mit „Agile“ einhergehenden Prinzipien in ihren Werkzeugen zu berücksichtigen. Mit Erfolg – wie an den in diesem Heft genannten Agile-ALM-Werkzeugen zu sehen ist. Sogar so erfolgreich, dass die Hersteller kommerzieller Plattformen für das Application Lifecycle Management damit werben, jetzt Open-Source-Versionskontrollsystem X, Open-Source-Build-Tool Y oder Open-Source-Continuous-Integration-Server Z zu unterstützen.
iX und heise Developer wünschen viel Spaß beim Vertiefen auch in die anderen Trendthemen des dritten iX Developer-Sonderhefts.
Alexander Neumann
PS: iX, heise Developer und der dpunkt.verlag bieten im kommenden Mai mit der parallel 2012 übrigens eine Konferenz zur Parallelprogrammierung an.