Green Coding be­zeich­net einen Ansatz in der Soft­ware­ent­wick­lung, dessen Ziel es ist, Pro­gramm­code mit minimalem En­er­gie­ver­brauch zu erstellen.

Was ist Green Coding?

Green Coding ist eine Pro­gram­mier­pra­xis, die darauf ausgelegt ist, möglichst um­welt­ver­träg­li­che Soft­ware­sys­te­me zu erstellen. Der Hin­ter­grund: Aufgrund der fort­schrei­ten­den Di­gi­ta­li­sie­rung spielt Software in nahezu allen Le­bens­be­rei­chen eine immer größere Rolle. Doch Software, die viel Energie ver­braucht, trägt erheblich zu Treib­haus­gas-Emis­sio­nen bei. Mit Green Coding wirkt man dieser Zwick­müh­le entgegen.

Zentraler Pfeiler von Green Coding ist nicht nur die En­er­gie­op­ti­mie­rung von Software, sondern auch die nach­hal­ti­ge­re Soft­ware­ent­wick­lung, bei der bei­spiels­wei­se er­neu­er­ba­re Energien genutzt werden, um Re­chen­zen­tren oder Cloud-Systeme mit Strom zu versorgen.

Tipp

Green Coding ist nur ein Teil der Be­mü­hun­gen, bei In­for­ma­ti­ons- und Kom­mu­ni­ka­ti­ons­tech­no­lo­gien Res­sour­cen ein­zu­spa­ren. Lesen Sie mehr dazu in unserem Artikel über Green IT.

Wie funk­tio­niert Green Coding?

Green Coding setzt auf allen Ebenen des Soft­ware­ent­wick­lungs­pro­zes­ses an: Sowohl die Ar­chi­tek­tur der Software als auch der zu­grun­de­lie­gen­de Ent­wick­lungs­an­satz sowie weitere Faktoren sind op­ti­mie­rungs­fä­hig. Ver­wor­re­ner und wenig op­ti­mier­ter Code soll in grünen Pro­gram­men vermieden werden. Der Grund hierfür ist einfach: Un­zu­rei­chend op­ti­mier­ter Code führt häufig An­wei­sun­gen aus, die für die Pro­gramm­lo­gik nicht zwingend er­for­der­lich ist. Dies führt zu unnötigen Zugriffen auf Res­sour­cen und mündet somit in En­er­gie­ver­schwen­dung.

Im Rahmen von Green Coding spricht man oftmals von den „Säulen des Green Coding“, die die Basis für nach­hal­ti­ge­re Software bilden.

Die Säulen des Green Coding

Das grüne Pro­gram­mie­ren fußt auf vier Säulen. Jede dieser Säulen ist es­sen­zi­ell für den Soft­ware­ent­wick­lungs­pro­zess und bietet das Potenzial, Res­sour­cen und Emis­sio­nen ein­zu­spa­ren.

Grüne Ar­chi­tek­tur

Die Soft­ware­ar­chi­tek­tur bildet die erste Säule. Hierbei handelt es sich um den grund­le­gen­den Aufbau der zu pro­gram­mie­ren­den An­wen­dun­gen. Dieser kann vor allem hin­sicht­lich des En­er­gie­ver­brau­ches optimiert werden: So ist es zum Beispiel möglich, den Code so zu bündeln, dass jederzeit eine optimale Aus­las­tung der Hardware ge­währ­leis­tet und so weniger Strom benötigt wird. Auch au­to­ma­ti­sche Ab­schal­tungs­me­cha­nis­men bei Nicht­ge­brauch von Software sind Teil grüner Ar­chi­tek­tur und tragen erheblich zu einem re­du­zier­ten En­er­gie­ver­brauch von An­wen­dungs­pro­gram­men bei.

Grüne Logik

Ein weiterer zentraler Faktor im Green Coding ist die Logik von Pro­gram­men. Im We­sent­li­chen gilt es hier, den Pro­gramm­code zu op­ti­mie­ren, sodass die Anwendung von Pro­gram­men nicht durch unnötige Code­an­wei­sun­gen ent­schleu­nigt wird. Weitere Faktoren wie die Wahl von res­sour­cen­scho­nen­den Da­tei­for­ma­ten oder ef­fi­zi­en­te­ren Da­ten­struk­tu­ren spielen ebenfalls eine große Rolle, wenn es darum geht, ef­fi­zi­en­ten und um­welt­freund­li­chen Pro­gramm­code zu entwerfen.

Grüne Methodik

Die Methodik ist eine Säule des grünen Pro­gram­mie­rens, die sich weniger mit dem Pro­gramm­code, sondern vor­ran­ging mit dem Soft­ware­ent­wick­lungs­pro­zess aus­ein­an­der­setzt. So eignen sich vor allem agile Soft­ware­ent­wick­lungs­mo­del­le für die en­er­gie­ef­fi­zi­en­te Anpassung von Code und An­wen­dun­gen. Das klein­schrit­ti­ge Ent­wi­ckeln und Testen beim agilen Pro­gram­mie­ren sorgt dafür, dass Pro­gramm­be­stand­tei­le mit schlech­ter En­er­gie­ef­fi­zi­enz früh erkannt und verändert werden können, sodass das End­pro­dukt im Op­ti­mal­fall so en­er­gie­scho­nend wie möglich ist.

Grüne Plattform

Green Coding setzt sich nicht nur mit der Software, sondern auch mit Hardware aus­ein­an­der. Auch hier gibt es eine Reihe von An­satz­punk­ten, die genutzt werden können, um um­welt­freund­li­che­re Systeme zu ge­währ­leis­ten. Ins­be­son­de­re die Aus­las­tung von Servern ist ein Faktor, der sich auf den Res­sour­cen­ver­brauch auswirkt: Server, die unter geringer Last laufen, ver­brau­chen mehr Strom als nötig. Cloud-Computing kann hier Abhilfe schaffen, da die Res­sour­cen flexibel skaliert und an den in­di­vi­du­el­len Bedarf angepasst werden können. Im Idealfall wird der En­er­gie­be­darf der Cloud-Computing-Server mit er­neu­er­ba­ren Energien gedeckt.

En­er­gie­ef­fi­zi­en­te Pro­gram­mier­spra­chen

Nicht nur das Design von Software wirkt sich auf die En­er­gie­ef­fi­zi­enz des End­pro­duk­tes aus: Auch die Wahl der Pro­gram­mier­spra­che, in der das Projekt rea­li­siert wird, ist maß­geb­lich. So un­ter­schei­den sich die ver­schie­de­nen Pro­gram­mier­spra­chen hin­sicht­lich ihres Res­sour­cen­ver­brau­ches in Sachen Energie, Speicher und Zeit stark.

Die en­er­gie­ef­fi­zi­en­tes­te Pro­gram­mier­spra­che ist C. Das ver­wun­dert nicht: C ist eine hard­ware­na­he Pro­gram­mier­spra­che und arbeitet mit einer geringen Abs­trak­ti­ons­ebe­ne, sodass Hard­ware­res­sour­cen effizient genutzt werden können. Auch die direkte Spei­cher­ver­wal­tung ist ein be­deut­sa­mer Faktor für die Effizienz von C, da sie es Pro­gram­mie­ren­den er­mög­licht, ef­fi­zi­en­te Stra­te­gien zur Al­lo­ka­ti­on und Deal­lo­ka­ti­on von Speicher (Spei­cher­re­ser­vie­rung) zu ent­wi­ckeln. Auch die auf C ba­sie­ren­de ob­jekt­ori­en­tier­te Sprache C++ ist äußerst res­sour­cen­scho­nend.

Neben C ist auch Rust eine Pro­gram­mier­spra­che, die sich her­vor­ra­gend für Green Coding eignet. Bei Rust handelt es sich um eine relativ junge Pro­gram­mier­spra­che, die dank einer kon­trol­lier­ten Spei­cher­ver­wal­tung ef­fi­zi­en­te Spei­cher­zu­grif­fe er­mög­licht. Auf diese Weise werden unnötige und en­er­gie­ver­schwen­den­de Zugriffe auf den Speicher vermieden. Auch das hohe Maß an Par­al­le­li­sie­rung, das Rust er­mög­licht, ist ein we­sent­li­cher Faktor für die En­er­gie­ef­fi­zi­enz: Hard­ware­res­sour­cen werden auf diese Weise optimal aus­ge­las­tet.

Was an dieser Stelle viel­leicht über­rascht, ist, dass Python, obwohl es sich um eine der be­lieb­tes­ten Pro­gram­mier­spra­chen handelt, im En­er­gie­ef­fi­zi­enz-Ranking äußerst schlecht ab­schnei­det. Das liegt zum einen daran, dass Python-Programme erst zur Laufzeit in­ter­pre­tiert und nicht kom­pi­liert werden: Es gibt also keinen ein­ma­li­gen Kom­pi­lie­rungs­pro­zess. Doch auch die dy­na­mi­sche Ty­pi­sie­rung der Sprache führt zu einer erhöhten Laufzeit von Pro­gram­men in Python, da die Va­ria­blen­ty­pen dynamisch während der Pro­gramm­aus­füh­rung ermittelt werden. Aus ähnlichen Gründen ist auch Ja­va­Script nicht sehr en­er­gie­ef­fi­zi­ent und eignet sich daher eher weniger für Green Coding.

Tipp

Wenn Sie sich für den Res­sour­cen­ver­brauch der einzelnen Pro­gram­mier­spra­chen in Detail in­ter­es­sie­ren, lohnt sich ein Blick auf unseren wei­ter­füh­ren­den Artikel zum Thema Nach­hal­tig­keit der be­lieb­tes­ten Pro­gram­mier­spra­chen.

Best Practices im Green Coding

Wenn Sie Ihre Programme in Zukunft auch grüner gestalten möchten, gibt es einige Best Practices, an die Sie sich im Ent­wick­lungs­pro­zess halten können.

  • In­tel­li­gen­te Soft­ware­ar­chi­tek­tur: Vermeiden Sie red­un­dan­ten und unnötigen Code. Vermeiden Sie unnötige Schleifen. Bauen Sie ge­ge­be­nen­falls Me­cha­nis­men ein, die das Programm bei Nicht­ge­brauch au­to­ma­tisch beenden.
  • Wahl der Pro­gram­mier­spra­che: Wählen Sie eine en­er­gie­ef­fi­zi­en­te Pro­gram­mier­spra­che für Ihr Projekt.
  • Kon­ti­nu­ier­li­ches Testen: Testen Sie die Kom­po­nen­ten Ihres Projektes klein­schrit­tig während der Ent­wick­lung und iden­ti­fi­zie­ren Sie Be­stand­tei­le, die besonders viele Res­sour­cen in Anspruch nehmen.
  • Daten und Netzwerke: Re­du­zie­ren Sie den Da­ten­ver­brauch und die Distanz, die Daten im Netzwerk zu­rück­le­gen müssen, z.B. durch Caching.
Zum Hauptmenü