Java zerstört Weltklima!
Jetzt haben wir C-Programmierer endlich mal wieder ein gutes Argument gegen die Programmiersprache Java: sie schädigt das Weltklima! Erlebt die Sprache C nun ihre Renaissance? Oder ist der Gerhards jetzt nur endgültig verrückt geworden?
Wie komme ich denn nun zu diesem "irrsinnigen" Gedanken? Im Blog gleich nebenan sinniert Gunter Dueck über "Green Programming". Er stellt dort die Frage, ob effiziente Programmierung nicht tatsächlich einen erheblichen Beitrag zum Schutz des Weltklimas leisten kann.
Seine Argumente sind gut und durchaus nachvollziehbar. Unsere IT-Infrastruktur benötigt immer mehr Strom. Wenn Programme nun effzienter arbeiten, dann wird weniger Rechenleistung benötigt, folglich in der Summe weniger Rechner und damit weniger Strom verbraucht. In der Fernwirkung hilft das effiziente Programm also dem Weltklima.
Tatsächlich kann, und sollte, man diese Meinung vertreten. Man muss allerdings beachten, dass "Effizienz" ein sehr vielschichtiger Begriff ist. Es gibt viele Aspekte, die den Energieverbrauch eines Programmes beeinflussen. Im Rahmen meines rsyslog-Projekts hatte ich Mitte 2008 beispielsweise in meinem Blog-Post "Coding to save the environment" darüber nachgedacht, wie man durch Vermeidung althergebrachter Programmierverfahren Strom sparen kann. Die Lösung liess sich mit relativ wenig Aufwand implementieren, und ich konnte forthin rsyslog als "grünen Protokolldaemon" anpreisen...
Aber bleiben wir einmal bei der reinen Laufzeiteffizienz. Die Wahl der Programmiersprache, so scheint es, hat manchmal schon fast etwas Religiöses. So schwelt seit Jahren ein Streit zwischen der C/C++ Fraktion auf der einen und der Java/.NET Fraktion auf der anderen Seite. C ist effzienter (obwohl Java hier stark aufgeholt hat!), verlangt vom Programmierer aber auch grössere Sorgfalt. Und da auch die sorgfältigsten Menschen Fehler machen, ist die Wahrscheinlichkeit, in einem gut geschriebenen C-Programm Fehler zu finden, höher als bei einem ebenso gut geschriebenen Java-Programm.
Auf der "religiösen" Ebene diffamiert man sich dann schon einmal gerne gegenseitig, so von wegen "man muss nur richtig programmieren können" vs. "in C kann man keine funktionierenden Programme schreiben".
Verlassen wir diese Ebene einmal und schauen auf die Fakten, dann gehört Java zu einer Sprachfamilie, die keinen direkten Maschinencode erzeugt. Um ein Java Programm auszuführen, wird also eine Art Interpreter benötigt, der das Java Programm in ein real auf der Hardware ausführbares Programm umwandelt. Das geschieht zur Laufzeit, und kostet daher zusätzlich Rechenzeit. In den Anfangstagen von Java hat das in der Tat zu quälend langsamen Programmen geführt. Mittlerweile ist die Technik dieser Interpreter aber weit fortgeschritten, der Overhead stark minimiert wurden.
Fakt ist und bleibt aber, dass ein gewisser Overhead existiert (was wohl auch der Grund sein dürfte, warum Betriebssysteme wie Linux oder Windows nicht in Java geschrieben sind). Ein Java Programm wird also üblicherweise etwas langsamer sein als ein vergleichbares C Programm.
Nun lacht sich der C-Programmierer ins Fäustchen: also braucht ich für Java mehr Rechenzeit, also mehr Rechner, also mehr Strom - und Ergo ist Java schädlich für's Weltklima. Wusste ich es doch!
Aber, gemach, gemach... Wie steht es denn mit der Zuverlässigkeit der Programme? Darf ich C-Programme (deren Zuverlässigkeit, das sagt der hartgesottene C-Programmierer, tatsächlich schwerer zu erreichen ist), wirklich überall einsetzen? Oder gibt es nicht Bereiche, in denen die Zuverlässigkeit wichtiger ist als die eigentliche Effizienz? Oder, ganz böse ausgedrückt: was nützt mir z.B. eine effziente Steuerungssoftware, die aufgrund eines Programmfehlers versagt und als Nebeneffekt z.B. Stromverbraucher zu lange angeschaltet lässt? Und dann kommen die Betriebswirte: Java-Programme sind in der Regel mit geringerem Aufwand zu Entwickeln als C-Programme (schon alleine, weil die Qualitätssicherungskosten niedriger sind). Wenn ich nun den Resourcenaufwand während der Entwicklung 'mal in die Ökobilanz eingehen lasse - ist ein C-Programm dann wirklich noch besser für das Weltklima? Zu guter Letzt kann ich auch von der hardcore IT-Franktion noch einwerfen: Ist denn wirklich die Wahl der Programmiersprache so entscheidend? Ist nicht die Wahl der Algorithmen viel wichtiger? Und die geschickte Anwendung der Werkzeuge? Sicher, ein exzellenter Programmierer wird wahrscheinlich in C effzientere Programme schreiben können als ein ebenso exzellenter Java-Programmierer. Aber was ist mit dem normal begabten Programmierer? Ist der Unterschied wirklich so entscheidend? Kann nicht eine Sprache wie Java unter Umständen sogar Fehler/Ineffizienzen des weniger guten Programmierers beseitigen?
Mhhh... Schade! Auch hier scheinen sich keine einfachen Antworten zu finden. Wie so oft im Leben ist die Wahrheit kompliziert und es bestehen viele Zusammenhänge.
Aber: von der provokativen Frage C vs. Java einmal abgesehen, so gibt es in der Tat Vieles, was Programmierer zum Schutz des Weltklimas beitragen können. Die Wahl der Programmiersprache sollte sich wohl eher nach anderen Kriterien richten. Aber ein effizienter Algorithmus, gutes Verständnis für die Maschine sowie der "Blick über den Tellerrand" helfen, Energieeffzienz auch als eine Aufgabe der Software-Entwickler zu sehen. Und, um im Beispiel zu bleiben: gerade wer die Java-Systemsoftware selbst entwickelt, hat natürlich gewaltiges Wirkpotential. Effzientere Implementierungen im Laufzeitsystem können in der Tat ungeahnte Folgen haben. Gleiches gilt für Betriebssystementwickler sowie all' diejenigen, die häufig eingesetzte Komponenten erstellen.
Leider findet sich das Thema "Energieeffzienz" noch in so gut wie keinen Software-Pflichtenheften. Entsprechend vernachlässigt wird es auch in der Ausbildung. Die IT wird erwachsen - leider sehr langsam. Wir sind immer noch damit beschäftigt, den Entwicklern Sensibilität für Security zu vermitteln. Und dort ist der Bedarf offensichtlich erkennbar. Ich befürchte, Energieeffizienz wird noch auf mittlere Sicht als eher exotisches Thema gehandelt werden. Um so schöner, hier in diesem Forum darauf hinweisen zu können.
Über Kommentare freue ich mich wie immer sehr!


