Wie nachhaltig sind die beliebtesten Programmiersprachen?

Wohin man auch blickt, das Thema Nachhaltigkeit ist omnipräsent. Klimawandel, Energiekrise, Inflation – all diese Faktoren tragen zu einem gesteigerten Bewusstsein bei, dass ein schonender Umgang mit Ressourcen erforderlich ist. Kaum eine Branche ist von dem Thema nicht betroffen, und so wird Nachhaltigkeit auch in der IT immer wichtiger. Wir stellen eine Studie vor, die die nachhaltigsten Programmiersprachen untersucht hat. Handelt es sich dabei auch um die beliebtesten?

Warum nachhaltiger Code?

Nachhaltigkeit ist ein Thema, das in oft unterschätztem Maße auch für die IT gilt, Stichwort „Green IT“. Schließlich benötigt es Energie, um Programme auszuführen. Umso mehr, wenn Code schwer lesbare oder gar redundante Abschnitte enthält, durch die sich die Initialisierungszeit für Anwendungen erhöht.

Es ist wichtig, sich vor Augen zu führen, dass tatsächlich jeder Quellcode einen ökologischen Fußabdruck hat. Hält man diesen gering, ergeben sich enorme Potenziale zur Einsparung von Energie. Denn so klein eine Zeile Code auch sein mag – rechnet man ihre Anwendung auf Server weltweit und zudem auf die gigantische Menge an Endgeräten hoch, wird schnell klar: Je schlanker ein Code, desto höher die Einsparpotenziale und desto niedriger die Emissionen.

Eine Studie aus Portugal von 2021 hat sich damit beschäftigt, welche Programmiersprachen am energieeffizientesten und damit am nachhaltigsten sind. Programmierende und Unternehmen können diese Ergebnisse also nutzen, um ihren Beitrag zu einer ressourcenschonenden Software-Entwicklung und -Nutzung zu leisten. Wir fassen die Ergebnisse zusammen und nehmen dabei auch Bezug auf eine Umfrage von Stack Overflow von 2022, in der die beliebtesten Programmiersprachen gelistet werden. Sind diese auch am nachhaltigsten?

Nachhaltige Programmierung – eine Definition

Bevor wir zur Auswertung der erwähnten Studie kommen, wollen wir kurz auf den Begriff „Green Coding“ eingehen. Er bedeutet aus dem Englischen übersetzt „Grünes Programmieren“. Ziel ist es, Software möglichst energieeffizient und damit nachhaltig zu programmieren. Dabei werden die Nachhaltigkeit des Codes selbst sowie dessen Auswirkungen auf die Umwelt berücksichtigt.

Demzufolge sind in einer ersten Definition Software-Lösungen nachhaltig, wenn:

  • ihr Code möglichst schlank ist, sodass er auf Endgeräten schnell ausgeführt wird.
  • sie über einen längeren Zeitraum nutzbar, veränderbar und weiterentwickelbar sind sowie effizient und einfach auf neue Markt- oder Kundenanforderungen angepasst werden können.

Damit bestehende Programme angepasst und weiterentwickelt werden können, ist es wichtig, sogenannte Code-Erosion (engl. „code rot“) zu vermeiden, also die allmähliche Verschlechterung des Codes. Bestehender Code muss demnach gepflegt und aktualisiert werden, um möglichst lang nutzbar zu sein. Das spart Zeit, Geld und Energie ein und ist somit auch aus wirtschaftlicher Perspektive sinnvoll.

Auch wenn es höhere initiale Kosten zur Folge hat: Es ist wichtig, dass Programmierende nicht ausnahmslos auf bereits bestehende Lösungen zurückgreifen, sondern sich auf die Ende-zu-Ende-Optimierung der Software konzentrieren können. Letztlich gilt es, überflüssigen Code möglichst zu vermeiden.

Methodik der Studie

Die ursprüngliche Studie „Ranking Programming Languages by Energy Efficiency“ wurde 2017 von sieben portugiesischen Forschern veröffentlicht. 2021 wurde sie dann erneut durchgeführt – auf diese Ergebnisse beruft sich dieser Beitrag.

Die Studie untersuchte die Ausführungszeit und die Spitzenspeicherauslastung von 27 Programmiersprachen. Beides wurde in Bezug zum Energieverbrauch gesetzt und dann geschaut, wie Zeit und Verbrauch zusammenhängen. Methodisch wurde auf das Software-Repository „Computer Language Benchmark Game“ (CLBG) zurückgegriffen, mit dem sich die Energiebilanz von Software quantifizieren lässt.

Die Werte für jede einzelne Programmiersprache wurden anhand von zehn häufigen Operationen gemessen, die beim Programmieren eine Rolle spielen können (z. B. das Generieren und Schreiben zufälliger DNA-Sequenzen), und für Benchmarks verglichen. Im Anschluss wurden die Ergebnisse in einer Tabelle zusammengefasst, die den jeweiligen Bedarf an Energie, Zeit und Speicher vergleichbar darstellt.

Zu welchem Ergebnis kommt die Studie?

Bei einem Vergleich der 27 untersuchten Programmiersprachen stellt man fest, dass es teils exorbitante Unterschiede bezüglich der einzelnen Werte gibt. Auf den vorderen Plätzen, also denjenigen, die den geringsten Energieverbrauch, die schnellste Ausführungszeit und den geringsten Speicherbedarf haben, befinden sich u. a. C, Pascal, Go, Rust, C++ und Ada. Im Folgenden gehen wir etwas genauer auf die einzelnen Daten ein.

  • Energieverbrauch: Auf den Plätzen 1 bis 5 befinden sich (in absteigender Reihenfolge) C (1,00 Joule), Rust (1,03 J), C++ (1,34 J), Ada (1,70 J) und Java (1,98 J). Auffällig ist vor allem die große Diskrepanz zu den hinteren Rängen: Die letztplatzierte Programmiersprache Perl kommt auf einen Verbrauch von 79,58 Joule.
  • Ausführungszeit: Diese Resultate entsprechen grob denen des Energieverbrauchs. Die ersten Plätze sind unverändert und werden belegt von C (1,00 Millisekunde), Rust (1,04 ms), C++ (1,56), Ada (1,85 ms) und Java (1,89 ms). Auf Platz 27 liegt Lua (82,91 ms).
  • Spitzenspeicherauslastung: Hier ändert sich das Bild. Zwar nehmen C (1,17 Megabyte) und C++ (1,34 MB) noch immer Top-5-Plätze ein (nämlich 3 und 5), doch Pascal (1,00 MB; Platz 1), Go (1,05 MB; Platz 2) und Fortran (1,24 MB; Platz 4) erreichten in den anderen Kategorien keine Top-Werte. Ada (1,47 MB; Platz 6) und Rust (1,54 MB; Platz 7) sind noch recht weit vorn dabei, während Java weit zurückfällt (6,01 MB; Platz 22). Den letzten Platz belegt Jruby (19,84 MB).

Es ist deutlich zu erkennen, dass einige der untersuchten Programmiersprachen durchweg besser abschneiden als andere. C, C++, Rust, Ada, Pascal und mit Abstrichen Fortran und Chapel erreichen in allen Kategorien gute Werte, während Sprachen wie Python, Ruby, Perl, Lua und Erlang weniger gut abschneiden.

Als Ergebnis ist vor allem Folgendes festzuhalten: Zum einen sind die schnellsten Programmiersprachen häufig auch die ressourcenschonendsten. Zum anderen bestehen große Unterschiede zwischen den ersten und den letzten Plätzen: fast das Achtzigfache beim Energieverbrauch, fast das Dreiundachtzigfache bei der Ausführungszeit und fast das Zwanzigfache beim Speicherplatz.

Angesichts all dieser Zahlen wäre es wünschenswert, wenn diejenigen Programmiersprachen, die gute Werte aufweisen, auch die beliebtesten und am weitesten verbreiten wären. Ist das der Fall?

Was sind die beliebtesten Programmiersprachen?

Um das zu überprüfen, ziehen wir eine Umfrage von Stack Overflow Developer Survey vom Mai 2022 zurate, in der u. a. nach den beliebtesten Programmiersprachen gefragt wurde. Befragt wurden 71.547 Personen, von professionellen Entwicklern und Entwicklerinnen bis hin zu Menschen, die das Coden gerade erst lernen. Die Fragestellung lautete: „Auf welche Programmier-, Scripting- und Markup-Sprachen haben Sie in den letzten Jahren umfassend beim Entwickeln zurückgegriffen, und mit welcher wollen Sie in den nächsten Jahren arbeiten?“ („Which programming, scripting, and markup languages have you done extensive development work in over the past year, and which do you want to work in over the next year?“). Und das sind die Ergebnisse:

Knapp zwei Drittel der Befragten nennen JavaScript, etwas über die Hälfte HTML/CSS und knapp die Hälfte SQL und Python. In absteigender Reihenfolge von gut einem Drittel bis zu knapp einem Fünftel der Befragten werden TypeScript, Java, Bash/Shell, C#, C++, PHP und C genannt. Die in der portugiesischen Studie durchweg gut platzierten Rust, Ada, Pascal, Fortran und Chapel spielen hier keine wesentlichen Rollen: Rust kommt auf unter zehn Prozent Nennungen, Fortran nur auf unter ein Prozent. Die übrigen drei werden sogar überhaupt nicht genannt.

Energieverbrauch, Ausführungszeit, Spitzenspeicherauslastung: Welche Programmiersprache schneidet insgesamt am besten ab?

Programmierende haben oft bestimmte Zielsetzungen hinsichtlich der Funktion ihres Codes: Mal macht die Anwendung es erforderlich, dass die Software möglichst energiesparend ist (z. B. bei Smartphone-Apps), mal geht es darum, dass die Speicherauslastung möglichst gering ist (z. B. bei Anwendungen, die im Hintergrund laufen). Was aber, wenn alle drei Charakteristika, nach denen die Studie Programmiersprachen bewertet, gleich wichtig sind oder man wissen möchte, welche die „beste“ ist, also unter dem Strich die niedrigsten Werte in allen Bereichen aufweist?

Die Antwort liefert folgende Grafik. Sie listet alle Programmiersprachen hinsichtlich ihres Abschneidens in allen drei Bereichen auf, also Energieverbrauch, Ausführungszeit und Spitzenspeicherauslastung. Da in jedem einzelnen Bereich möglichst niedrige Werte vorteilhaft sind, ergibt sich eine gute Vergleichbarkeit. Um es Interessierten und Nutzenden zu erleichtern, sowohl die generelle Nachhaltigkeit als auch die Beliebtheit einer Programmiersprache auf einen Blick zu erfassen, haben wir auch letztere mitangegeben. Die Grafik fasst somit die wichtigsten Erkenntnisse aus beiden Quellen zusammen:

Das Ergebnis: C, Pascal und Go belegen die Spitzenplätze, gefolgt von Rust, C++ und Fortran. Schlusslicht ist Perl, aber auch beliebte Sprachen wie  JavaScript, Python und TypeScript belegen hintere Plätze.

Was bedeutet das Ergebnis für Green Coding?

Die beliebtesten Programmiersprachen sind nicht die nachhaltigsten – eher ist das Gegenteil der Fall. Dass dem so ist, hat mehrere Gründe. So lassen sich Aufgaben mit einigen der ressourcenaufwendigsten Programmiersprachen wie z. B. Python oft deutlich schneller lösen als mit anderen, nachhaltigeren. Insofern stehen Nachhaltigkeitsaspekte oft hinter Funktionalität zurück. Zudem sind vergleichsweise kurze Python-Skripte nicht nur sehr schlank und schnell geschrieben, es ist sogar möglich, sie innerhalb von C oder C++ zu implementieren und unkompliziert auf andere Plattformen übertragen. Energieaufwendiger Code ist also oft schlicht einfacher zu handhaben als ressourcenschonender.

Zudem sind drei wichtige Einschränkungen hinsichtlich der portugiesischen Studie zu beachten:

  • Es gibt neben Energieverbrauch, Ausführungszeit und Spitzenspeicherauslastung noch andere Faktoren, die die Nachhaltigkeit betreffen, aber keine Erwähnung finden. Dazu gehört beispielsweise die nachhaltige Produktion von Geräten.
  • Code-Eigenschaften allein entscheiden nicht darüber, wie gut und effizient ein Code auf einer Plattform läuft. Letzten Endes kommt es hierbei immer auf ein Zusammenspiel von Software und Hardware an.
  • Zudem wird in der Studie die Hardware komplett außen vorgelassen. Diese spielt jedoch eine wichtige Rolle dabei, wie gut sich ein Code auf verschiedene Systeme portieren lässt und wie effizient der Befehlssatz ausgeführt wird.
Zitat

"Die Transparenz durch die portugiesische Studie hilft, Nachhaltigkeit als funktionalen Aspekt in der Softwareentwicklung zu berücksichtigen. Unternehmen haben durchaus einen extrinsischen Anreiz nachhaltigen Code zu schreiben, da dieser unmittelbar mit niedrigen Hardwarekosten einhergeht. Ist es jedoch wichtig zu verstehen, dass Softwarearchitekt:innen nicht frei zwischen Sprachen entscheiden können, sondern Sprachen wählen müssen, die zum Anwendungsfall, existierender Software und dem Skillset des Entwicklungsteams passen. Unter diesem Aspekt ist es sicherlich sinnvoll, wenn Universitäten und Berufsschulen ihre Unterrichtssprachen auch nach Nachhaltigkeitsaspekten wählen."

- Robert Schleinhege (IONOS)

Fazit & Ausblick

Das Nachhaltigkeits-Ranking der Studie gibt interessante Einblicke und kann dazu beitragen, dass sich Entwickelnde und Hersteller künftig für ressourcenschonendere Programmiersprachen entscheiden. Es ist aber nicht als finales Urteil zu verstehen, denn die oben erwähnten Einschränkungen müssen in Betracht gezogen werden.

Unter dem Strich gilt, dass diejenige Software am nachhaltigsten ist, die gut geschrieben ist. Das bedeutet: Der Code sollte möglichst kompakt sein, sich schnell ausführen lassen und wenig Speicherplatz benötigen. Genau dafür gilt es bei Unternehmen, Institutionen und Programmierenden ein Bewusstsein zu schaffen. Wünschenswert wäre es demnach, wenn Verantwortliche längerfristig denken und Programmierende dazu anhalten würden, auf schlanken, leicht pflegbaren und somit nachhaltigen Code zu achten. Die höheren initialen Kosten würden durch Einsparungen im Zeitverlauf u. a. durch geringere Hardware-Kosten mehr als wettgemacht.