Green Programming!

BLOG: WILD DUECK BLOG

Wahrheiten als Querdenkerisches verkleidet, von Gunter Dueck
WILD DUECK BLOG

Der Strom, den die Computer verbrauchen, kostet bald oder jetzt schon mehr, als sie beim Kauf kosten. Über den Kaufpreis jammern alle, aber die Energie für den Rechner fließt nur so unbemerkt davon. Die Green IT Bewegung hat uns in den letzten ein, zwei Jahren wach gerüttelt. Ich habe in der vorigen Woche mit einem der ersten Sturmglockenläuter diskutiert, dem WiWo Redakteur Thomas Kuhn. Und da fiel mir ein, dass wir die Energie vielleicht noch ganz woanders verschwenden: beim schlechten Schreiben von Programmen.

Als ich 1987 beim IBM Wissenschaftlichen Zentrum in Heidelberg zu arbeiten begann, entwickelte im Büro nebenan ein begnadeter Kollege, Ulrich Schauer, Programme in der Sprache APL2, die auch heute noch Jünger hat. Ich durfte bei ihm lernen. Die Sprache APL2 wird interpretiert. Der Rechner liest also Zeile für Zeile des Programms einzeln und führt die Befehle dieser Zeile nacheinander aus. Danach liest er die nächste Zeile, interpretiert, welche Befehle sie enthält und führt die Befehle wieder aus. Alles schön Schritt für Schritt.

Eines Tages wurden wir zu einem Unternehmen gerufen, das wissen wollte, ob sich parallele Programmierungen bei seinen typischen Anwendungen lohnen würden. Ulrich Schauer fuhr mit mir hin – ich in seinem Schlepptau wie ein ahnungsloser Knappe hinter seinem Ritter. Man hatte für uns alle Programme auf Endlospapier ausgedruckt, es war ein größerer Stapel. Mein Kollege fuhr einmal grob blätternd über den Stapel, schüttelte den Kopf und verneinte: „Parallel bringt bei solchen Programmen nichts.“ Ich erinnere mich genau an diesen Augenblick. Ich war kaum je in meinem Leben so voller Bewunderung für eine Kunst. Das Unternehmen war nicht gleich so überzeugt wie ich. Wir vereinbarten, dass einen Tag lang ein Zählprogramm in den Großrechnern mitlaufen sollte. Wir würden dann wissen, welche Zeilen der Programme die Großrechner sehr oft ausführen mussten. Diese Zeilen, so vereinbarten wir, würden wir neu und besonders „schnell laufend“ implementieren. Wir reisten also ab und erschienen eine Woche später wieder.

An der Eingangspforte gab man uns zu verstehen, dass wir leider vergebens gekommen wären. Das Programm  mit dem Zeilenzählen habe wohl versagt. Es hätte behauptet, eine einzige Zeile Programm im ganzen Rechenzentrum würde über drei Viertel der Rechenzeit aller Computer verschlingen. 85 Prozent! Das machte uns natürlich sehr neugierig. Wir schauten nach: Es war der Befehl, eine Zahl auf zwei Nachkommastellen zu runden (also damals auf Pfennige, es gibt ja bei Geld nicht mehr als zwei Stellen hinter dem Komma).

Da hatte jemand in dieser Zeile das Runden auf Mark und Pfennig programmiert, und zwar so: Man nehme die zu rundende Zahl mal 100, hacke dann alle Nachkommastellen weg (dafür gibt es einen Befehl, der heißt „Ganzzahlig machen“) und teile das Ergebnis wieder durch 100. Fertig.

Herr Schauer seufzte über diesem Machwerk sehr tief, ich etwas später auch. Es ist nämlich so: Ein Computer kann in einem Takt immer eine Rechnung ausführen. Einfache Rechnungen kann er eventuell in einem Takt schaffen, kompliziertere Rechnungen eben in mehreren Takten oder in vielen. Eine Addition dauert einen Takt, eine Multiplikation auch einen, das Abhacken der Stellen hinten ebenfalls einen Takt. Aber das Teilen oder Dividieren ist VIEL komplizierter als das Addieren, das dauerte damals 17 Takte. In Worten: Siebzehn! Das Dividieren muss man also beim Programmieren scheuen wie der Teufel das Weihwasser. Man muss in diesem Fall ja auch gar nicht dividieren! Überlegen Sie: Statt eine Zahl durch 100 zu teilen, kann ich sie auch mit 0,01 multiplizieren! Es kommt dasselbe heraus! Aber der Computer braucht nur einen Zeittakt statt siebzehn.

Wir haben damals folglich „geteilt durch 100“ durch „nimm mal mit 0,01“ ersetzt. Danach brauchte diese Zeile Rechenzentrum längst nicht mehr 85 Prozent der Rechenzeit! Bedenken Sie: In einem Finanzhaus runden die Rechner fast in jeder Zeile auf Cents, klar? Und diese Rundung, die fast immer dabei ist, machten wir einige Male schneller. Und diese Verbesserung schlug sich fast in jeder Programmzeile nieder! Ich war sehr, sehr stolz.

Die Mitarbeiter des Unternehmens aber freuten sich dann nicht offensichtlich. Es tat ihnen weh, das sah ich in den Gesichtern. Sie konnten sich nicht so naiv freuen wie einer, der Mathe studiert hat wie ich. Und die Leute in meiner Firma IBM schienen auch nicht so wirklich glücklich, dass wir nun serienweise Computer einsparen konnten. Wir sind damals eher ziemlich betreten heimgereist. Eine Analyse der Programme aus dem Stapel zeigte, dass mit echter allerhöchster Programmierkunst von meinem Kollegen so etwa alles drei- bis viermal schneller zu programmieren gewesen wäre …

Ich hatte sofort eine Business Idee. Wir würden das als Service verkaufen! Alles dreimal schneller! Aber niemand wollte so recht. Die Unternehmen kauften lieber schöne Computer und strickten Programme „mit der heißen Nadel“, aber Meisterschaft erwerben? Sie sagten, dass die Computer bald so schnell würden, dass es billiger wäre, die Programme zügig zu entwickeln und dadurch Geld zu sparen.

Und heute? Die Computer sind inzwischen tausend Mal schneller, aber das Hochfahren von einem PC dauert immer länger. Huuh, das ist jetzt eine unfair emotionale Formulierung, aber Sie verstehen, was ich meine? Ich weiß ja, dass die heutigen Programme wahrscheinlich tausend Mal mehr leisten, ich weiß, ich weiß. Tolle Programme! Ich bewundere sie, obwohl ich eigentlich nur tippe und surfe, wie jetzt.

Aber ich darf doch die Gretchenfrage stellen, ob die Programmierer heute auf Schnelligkeit der Programme achten? Viele von ihnen nutzen Programmbibliotheken. Sind wenigstens die auf Top-Performance gestylt? Oder werden die nach Preis eingekauft? Von der Art „Hauptsache, das Programm tut, was es soll?“

Sollten wir nicht einmal Studien anstellen, wie viel Strom das suboptimale Programmieren verschwendet? Nicht nur die Rechner?

Ich habe damals nicht wirklich das Programmieren gelernt, nur einen Hauch mitbekommen, was wahre Kunst ist. Ich wurde gleich zum Manager berufen und habe das wirkliche Programmieren übersprungen. Aber ich fühle, dass da etwas ganz Wichtiges schlummert.

Stellen Sie sich die zukünftige Zeit vor, wo ein Großteil der Energie für Computer verwendet wird. So 85 Prozent! Und dann ist doch die Idee, alles drei- bis viermal so speedy zu programmieren, nicht aus der Welt? Es geht ja dann wieder einmal um das Überleben, oder?

Ich glaube, ich muss einfach so, ohne programmieren zu können,

GREEN PROGRAMMING

fordern. So ganz sicher bin ich dabei nicht, aber eigentlich schon. Mich plagt wohl nur die Angst vor der eigenen Courage. Aber Sie? Sie können doch programmieren? Achten Sie dabei auf die Schnelligkeit des Programms oder doch nur auf die Schnelligkeit des Programmierens?

Und jetzt lesen Sie vielleicht noch den Artikel von Thomas Kuhn aus der WiWo, der gibt Ihnen in dieser Sache den Rest:

Gezielte Kühlung für Computer

Avatar-Foto

Veröffentlicht von

www.omnisophie.com

Bei IBM nannten sie mich "Wild Duck", also Querdenker. Ich war dort Chief Technology Officer, so etwas wie "Teil des technologischen Gewissens". Ich habe mich viel um "artgerechte Arbeitsumgebungen" (besonders für Techies) gekümmert und über Innovation und Unternehmenskulturen nachgedacht. Besonders jetzt, nach meiner Versetzung in den Unruhestand, äußere ich mich oft zum täglichen Wahnsinn in Arbeitsumgebungen und bei Bildung und Erziehung ein bisschen polarisierend-satirisch, wo echt predigende Leidenschaft auf Stirnrunzeln träfe. Es geht mir immer um "artgerechte Haltung von Menschen"! Heute bin ich als freier Schriftsteller, Referent und Business-Angel selbstständig und würde gerne etwas zum Anschieben neuer Bildungssysteme beitragen. Ich schreibe also rund um Kinder, Menschen, Manager und Berater - und bitte um Verzeihung, wenn ich das Tägliche auch öfter einmal in Beziehung zu Platon & Co. bringe. Die Beiträge hier stehen auch auf meiner Homepage www.omnisophie.com als pdf-download bereit. Wer sie ordentlich zitiert, mag sie irgendwo hin kopieren. Gunter Dueck

8 Kommentare

  1. Exzellenter Post! 😉

    Hallo,

    ja, das ist in der Tat ein Thema, das auch mir sehr am Herzen liegt. Ich fühle mich jetzt motiviert, nachher gleich auch noch einen etwas gehässigen Post nachzuschieben – kommt gleich.

    Das Thema ist hochaktuell. Ein anderes Szenario habe ich z.B. in meinem Englischen Blog schon beschrieben:

    http://blog.gerhards.net/…-save-environment.html

    Freut mich, dass das Thema nun hier aufkommt.

  2. So, da ist er nun, der Post…

    … und zwar ganz bewusst “etwas” provokativ formuliert:

    http://www.wissenslogs.de/…va-zerst-rt-weltklima

    Danke für den Denkanstoss. Ich denke, in dem Thema steckt noch Stoff für viele, viele Diskussionen und sicherlich mehr als eine Handvoll Postings 😉

    Rainer Gerhards

  3. Green

    Ein herrlicher Post! Wobei ich sagen muss, dass ich lieber ein Programm habe, was etwas weniger grün, also etwas langsamer ist, dafür aber auch für andere noch nachvollziehbar, wenn diese in den Quellcode ‘reinschauen…
    Google födert ja auch die Erforschung alternativer Energiequellen, vermutlich aus reinem Eigeninteresse, da die google-server Stromfresser gigantischen Ausmasses sein müssen. Da gab es doch mal diese lustige Rechnung, dass eine google-Suchanfrage soviel Strom verbraucht, dass man damit ein Zimmer eine Stunde lang beleuchten könnte… allerdings sind solche Rechnungen ja bekanntermaßen mit der nötigen Skepsis zu betrachtet (Link dazu auf tagesschau: http://www.tagesschau.de/…energieverbrauch2.html )

  4. Rechner vom Netz nehmen, um zu rechnen

    Eines der Themen, die in diesem Zusammenhang meines Wissens nie bis selten genannt werden, nenne ich Lokalisierung.
    Ein Beispiel: ich habe auf meinem PC lokal eine EXCEL-Datei mit 250.000 Eingabedatensätzen. Diese sollen von einer Software zu 3 Mio. Ergebnissätzen verarbeitet werden. Die Software kann ich entweder über das Firmennetz starten und das Ergebnis auf ein Server-Laufwerk speichern lassen, oder ich kann den Rechner vom Netz trennen, das Programm lokal verwenden und die Ergebnisdatei lokal auf dem PC speichern.
    Läuft der Rechner im Netz, die Software servergesteuert, so benötigt sie im Mittel 10 Stunden für die Listen-Verarbeitung. (Es laufen Virenerkennungsprogramme usw. im Hintergrund, der Server muss evtl. viele andere Aufträge parallel abarbeiten usw.). Die lokale Variante des Vorgangs auf dem PC benötigt für dieselbe Arbeit lediglich 1:30 h. Also: Stapelverarbeitung wo möglich rein lokal ausführen. Laufen Programme über den /die Server eines Unternehmens, spielt es i.d.R heute eine geringe Rolle, wie effizient ein einzelnes Programm ist. Die Servertaktungen geben zum Großteil den Stromverbrauch vor. (Natürlich: Wenn alle Programme effizienter gestaltet werden merkt man’s, aber die Lokalisierung bringt deutlich mehr “Greenness”).

  5. Solche Erfahrungen haben sicher schon viele gemacht, die länger in diesem Geschäft sind. Es ist verblüffend, an welchen Kleinigkeiten es manchmal hängt.

    Meiner Erfahrung nach achten die meisten Entwickler nicht (mehr) auf Effizienz (sowohl Laufzeit als auch Speicher). Meistens fehlt das Bewusstsein, oft leider auch das Verständnis. Im Allgemeinen ist es auch lieber gesehen, dass schnell, also kostensparend, entwickelt wird.

    Was ist die Folge?

    Irgendwann muss die Performance im Nachhinein aufgepäppelt werden. Kosten sparen? Hmm. Von Energie gar nicht zu reden.

    Wieviel Energie sich durch schnellere Programme sparen lässt, kann ich nicht sagen. Tatsache ist doch, dass eine Menge Hardware die meiste Zeit nur im Leerlauf vor sich hin wartet. In diesem Fall hilft “energiebewusste” Hardware, die nicht benötigte Schaltungsteile abschaltet, mehr.

    Interessant wird es bestimmt bei Serverfarmen, wie Suchmaschinen. Dort wird aber schon großer Wert auf Performance gelegt, wenn auch nicht (nur) aus Gründen der Energieersparnis.

    Eine andere Frage ist, wie weit das Bewusstsein für diese Problematik besteht. Wieviele Anwender achten auf den Energieverbrauch? Hier bewegt sich noch nicht viel. Mal sehen…

  6. Das sage ich schon langer, aber… 😉

    Hallo,

    hervorragender Beitrag! Ich habe rund 13 Jahre Erfahrung als Software-Entwickler. Bereits in meiner Schulzeit habe ich bei einem ausgezeichnetem Mentor das Programmieren mit C/C++ gelernt. Meine Anfänge habe ich natürlich noch GW-BASIC gemacht und damals auch prompt einen Landkreis-Wettbewerb gewonnen. In meiner Ausbildung durfte ich sogar COBOL auf AS/400 und BS2000 lernen. 🙂 Wobei ich C/C++ dann doch bevorzugt habe…

    Aber ich will mal zum “Aber…” kommen. Ich kann Ihrem Artikel absolut beipflichten. Was ich in den letzten Jahres so alles gesehen habe, war teilweise der reinste Horror. Das Problem was wir heute allerdings haben, ist nicht nur das die Software-Entwickler tief genug in der Materie stecken, sondern sich auch die Kunden stark gewandelt haben. Stichwort: “Geiz ist geil”…

    Ich habe mich erst letzte Woche wieder damit herumärgern dürfen. Ein Angebot von mir war schon so knapp kalkuliert – so knapp das man in der Zeit eh nicht sauber bzw. “green” programmieren könnte – aber der Kunde will nun doch noch nach verhandeln. Obwohl wir mehrfach bekundet haben, dass das bewusst knapp kalkuliert ist, damit es noch ins Budget vom Vorjahr passt. Ist dem Kunden aber völlig egal, der will das Stück Software noch billiger, weil andere Anbieter es billiger machen können. Gaaaanz toll…

    In den letzten 10 Jahren hab ich eigentlich gemerkt wie von Jahr zu Jahr die Anforderungen an eine Software gestiegen, die bezahlten Aufwände allerdings gesunken sind. Auch die Wertschätzung von Software-Entwicklung ist massiv gefallen. Quasi: “Ach mein Sohn klickt das doch zuhause auch schnell mit Visual Schlagmichtot zusammen…”. Software wird heute auch mehr und mehr ein Wegwerf-Artikel. Beobachten Sie doch mal den Smart-Devices Markt. Viel länger als 2 Jahre wird eine Software nicht mehr benutzt. Bei so kurzen Laufzeiten, sind die Kunden einfach nicht mehr bereit Geld in Software-Entwicklung zu investieren.

    Ergo, es spielen viele Faktoren in ihr beschriebenes Dilemma ein. Das Bewusstsein für “Green Programming” muss erst noch erwachen. Aber ich glaube davon sind wir noch seeeeeehr weit entfernt.

    Gruß
    Tschokko