Über langsame Software hat sich wohl jeder schon geärgert. Und das, obwohl die verwendete Hardware immer leistungsfähiger wird. ZDNet sprach mit Mathematikprofessor Gunter Dueck über Ursachen und Optimierungspotenziale.
Software ist überall: als Betriebssystem auf unserem PC, als Rückgrat der Warenwirtschaft in Unternehmen und inzwischen sogar in Autos und als "App" auf dem iPhone. Und sie unterliegt - ebenso wie vieles andere - inzwischen Moden. Aber Moden sind kurzlebig. Also muss auch Software schnell und äußerlich ansprechend entwickelt werden. "Innere Werte" zählen dabei immer weniger.
Aber Software trägt durch die Art ihrer Programmierung wesentlich zum Energieverbrauch der Rechner bei, die mit ihr arbeiten müssen. Und Software führt zu ärgerlichen Verzögerungen beim Aufrufen von Programmen - das ist nicht die Schuld der Entwickler, müsste aber auch nicht sein. Neue Paradigmen auch beim Rechnerbau könnten die Effizienz von Software um ein vielfaches steigern, meint Gunter Dueck[1], IBM Distinguished Engineer[2]. Im ZDNet-Interview erklärt er, wie er zu dieser Ansicht kommt und warum es trotz immer noch rasch wachsender Rechen- und Speicherkapazitäten ein erstrebenswertes Ziel ist, Software ressourcenschonend zu programmieren.

Gunter Dueck, Mathematikprofessor und IBM Distinguished Engineer (Bild: Gunter Dueck/omnisophie.de).
ZDNet: Herr Dueck, Sie glauben, Software könnte um ein Mehrfaches effizienter arbeiten. Wieso?
Dueck: In den Anfängen der Programmierung kam es auf jedes Bit und jedes Byte an. Denn die Interpretation einer Zeile Programmcode verursachte eine Verzögerung von einer Millisekunde. Man hat als Programmierer versucht, diese Verzögerung zu vermeiden, indem man den Code in möglichst wenige Programmzeilen steckte, die aber sehr durchdacht waren. Ein guter Programmierer konnte zum Beispiel bei Vektoroperationen Vektoren mit einem einzigen Befehl komplett umdrehen, während man heute jede Zahl im Vektor einzeln verschiebt.
Zum Beispiel konnten bestimmte Spiele auf Atari oder Commodore nur laufen, wenn man jedes überflüssige Bit in den oberen Speicherbereich verschob, denn es gab einfach nur sehr begrenzte Kapazitäten. So zu programmieren, war natürlich sehr aufwändig und teuer. Deshalb sind diese Programmierkünste heute verloren gegangen.
ZDNet: Warum hat man damit aufgehört?
Dueck: Das hat mit einer an sich positiven Entwicklung zu tun, nämlich mit der Verbilligung und Verkleinerung der Hardwareressourcen, letztlich also mit dem Mooreschen Gesetz[3]. Wenn ich Gigabytes an Speicher und superschnelle Prozessoren zur Verfügung habe, dann ist es eben nicht mehr nötig, solche Programmierakrobatik zu betreiben. Infolgedessen - und davon haben alle, auch die Anwender, lange profitiert - wurde die Programmierung darauf optimiert, möglichst schnell und möglichst günstig neue Software zu entwickeln. Ob die sparsam mit Speicher- oder Prozessorressourcen umgeht, war lange kein Thema.
ZDNet: Das scheint sich aber jetzt zu ändern.
Dueck:: Richtig, und zwar aus zwei Gründen. Einmal, weil unsere Rechner in der Regel viel zu lange brauchen, um hochzufahren. Das ärgert viele Anwender, und es sollte nicht so sein. Zum anderen baut die Debatte um Green-IT- und den Umgang mit Ressourcen Druck auf. Inzwischen fragen sich auch die Spezialisten, ob es wirklich nötig ist, dass die Software ständig alle Prozessorbestandteile am Laufen hält. Langsam verschiebt sich der Fokus der Optimierung: weg von den immer schnelleren Prozessoren, hin zu neuen Konzepten.

"Langsam verschiebt sich der Fokus der Optimierung: weg von immer schnelleren Prozessoren, hin zu neuen Konzepten", sagt Gunter Dueck (Bild: Gunter Dueck/omnisophie.de).
ZDNet: Welche Konzepte könnten das sein? In den letzten Jahren wurde ja viel über Objektorientierung[4] gesprochen.
Dueck: Objektorientierung diente in erster Linie der Beschleunigung und Verbilligung der Programmerstellung: Man baut Module, die anschließend mehrfach verwendet werden sollen.
ZDNet: Welche Konzepte meinen Sie dann?
Dueck: Man kann sich zum Beispiel Systeme vorstellen, die aus vielen, aber billigeren Prozessoren bestehen. Diese Prozessoren wären dann jeweils nur für eine ganz bestimmte Anwendung oder Aufgabe zuständig. Sie würden auch nur laufen, wenn jemand an dieser Aufgabe, zum Beispiel Textverarbeitung, sitzt. Die übrige Zeit könnten sie einfach abgeschaltet bleiben. Das würde auch bedeuten, dass Anwendungen erheblich schneller hochfahren. Erste Ansätze dafür zeigen sich in den neuen Multicore-Architekturen.
ZDNet: Welche Effizienzressourcen vermuten Sie?
Dueck: Genau kann das niemand sagen. Ich gehe aber davon aus, dass Software mindestens um den Faktor Fünf schneller sein könnte. Ich habe aber auch schon erlebt, dass ein guter Programmierer, mit einer dafür geeigneten Programmiersprache, den Code einer Anwendung um den Faktor Zehn oder noch mehr beschleunigt hat.
URLs in diesem Artikel:
[1] = http:/
[2] = http:/
[3] = http:/
[4] = http:/