$ curl /green-coding_

Green Coding – eko trend-ściema czy coś więcej?

Piotr Cichosz @ 28 kwietnia 2022 4min

Nie wiem jak wy, ale od zawsze mam problem z produktami „eko”. Za każdym razem kiedy mam z nimi styczność, to zastanawiam się czy w ten sposób ktoś nie chce wyciągnąć ode mnie więcej pieniędzy. Kilka dni temu usłyszałem o, dla mnie nowym, trendzie czy idei – green coding. Nawet nie wiem czy warto tłumaczyć ten termin na polski. Zielone kodowanie? Ekologiczne programowanie?

Postanowiłem zgłębić ten temat czy to aby napewno nie jest kolejny buzz-word, który tylko fajnie brzmi i można tym tylko komuś zaimponować (lub rozśmieszyć).

Skąd dowiedziałem się o green codingu? Czas w którym powstaje ten wpis, to okolice Dnia Ziemi, który przypada na 22 kwietnia. Oznacza to, że tego dnia prowadzone są specjalne wydarzenia, których celem jest promowanie postaw proekologicznych w społeczeństwie.

O co chodzi z Green Coding?

Niektórzy już mogą się domyślać powyższym wstępnie. Green Coding to idea tworzenia kodu programistycznego w taki sposób by zużywał jak najmniej energii. Jednak sam kod, to nie wszystko. Dobrze jest też zaimplementować rozwiązania behawioralne czy takie w jaki sposób korzysta z naszej aplikacji użytkownik. Niby mało istotna sprawa, ale jak się dłużej nad tym zastanowimy, to istnieje korelacja pomiędzy scenariuszem użytkownika a ilością kody jaką trzeba stworzyć.

Czy przypadkiem nie chodzi tutaj o odpowiednią jakość kodu, optymalny kod, wydajne algorytmy? No jasne, że tak. Jeżeli kod jest dobrze napisany, to jego efektem ubocznym może być mniejszy zużycie prądu.

W tym miejscu powinieneś zainteresować się tematem notacji Big-O (jeśli jeszcze nie wiesz co to jest). To tylko jedna z rzeczy o której trzeba pamiętać pisząc swój kod.

Aby można było mówić o byciu „Green Software Engineer”, aplikacja którą tworzysz powinna być:

  • energooszczędna,
  • efektywna energetycznie – czyli nasz program nie powinien pobierać dodatkowej energii by działać efektywniej,
  • wydajna (sprzętowo),
  • zoptymalizowana – nie powinna wysyłać i pobierać nadmiarowych danych oraz działać szybko i sprawnie.

Naukowcy pochylili się nad problemem energooszczędności języków programowania

Okazuje się, że już kilka lat temu naukowcy pochylili się nad tym problemem. Sprawdzili, które języki są bardziej zielone od innych. Czyli, które zużywają mniej energii elektrycznej.

Do badania wykorzystano 10 znanych problemów programistycznych, które zostały rozwiązane w 27 językach. Ponadto mierzono czas i zużycie pamięci.

Wyniki okazały się całkiem ciekawe. Okazało się, że językami które spełniają najwięcej „zielonych” kryteriów są kompilowane.

Średnio, kompilowane języki zużywały 120 J [dżuli] na wykonanie rozwiązań, podczas gdy języki uruchamiane przez maszyny wirtualne i interpretery osiągały wyniki na poziomie 576 J i 2365 J.

Ujednolicona tabela TOP5 najefektywniejszych języków programowania przedstawia się następująco:

Zużyta energia Run-time
C 57J 2019 ms
Rust 59J 2103 ms
C++ 77J 3155 ms
Ada 98J 3740 ms
Java 114J 3821 ms

Po więcej szczegółów odsyła na thenewstack.io, gdzie wyniki badań zostały opisane trochę bardziej obszernie. Aha, JavaScript, język w którym programuję na codzień, wypadał w środku stawki.

Nie wiem jak wy, ale dla mnie to trochę wygląda jak dorabianie większej filozofii do czegoś co powinien robić każdy programista. A co powinien robić? Starać się tworzyć najbardziej wydajne oprogramowanie.

Widzę to tak, że ten green coding może się lepiej sprzedawać, bo wiecie, bycie eko i przyjaznym środowisku jest teraz bardzo modne. Wiele firm chce się chwalić, że robi coś „ważnego”.

Przykłady Green Coding

Co do przykładów, to będę miał ich kilka.

Przeglądanie YouTube
Przeglądanie YouTube

Pierwszy jaki można podać, to ten związany z YouTube. Nie wiem czy pamiętacie, ale jeszcze kilka lat temu YouTube miał całkiem poważny problem z grzaniem się telefonów z iOS. Wystarczyło oglądać filmy w tym serwisie i plecki iPhone’ów zaczęło się strasznie grzać. Problem został nagłośniony i programiści rozwiązali problem.

Takim akademickim przykładem może być porównanie algorytmów sortowania. Jest kilka sposobów by sortować dane, ale nie każdy z nich jest optymalny. Polecam zobaczyć poniższe wideo, które porównuje różne metody sortowania.

Gdyby ktoś chciał zgłębić wiedzę na temat tech ruchu, to mogę odesłać do innych źródeł:

$ post meta
categories: ["Programowanie"]
$ whoami
Piotr Cichosz
Piotr Cichosz
Od ponad 10 lat jestem zaangażowany w świat elektroniki użytkowej, zdobywając szeroką wiedzę i doświadczenie w testowaniu oraz recenzowaniu najnowszych technologii. Moja kariera obejmuje pracę w wiodących firmach technologicznych, gdzie specjalizowałem się w rozwiązywaniu złożonych problemów technicznych oraz doradzaniu w kwestiach wyboru sprzętu. Na moim blogu publikuję dokładne poradniki oraz recenzje urządzeń takich jak smartfony, routery i słuchawki, oferując czytelnikom rzetelne informacje oparte na wieloletnim doświadczeniu i skrupulatnych testach. Moim celem jest dostarczanie treści, które pomagają w podejmowaniu świadomych decyzji zakupowych oraz pełnym wykorzystaniu możliwości nowoczesnej elektroniki.
$ git log --neighbors
[PREV] Naucz się Javy i pomóż Ukraińcom zdobyć nowy zawód – Inicjatywa społeczna CodeGym 28 kwietnia 2022 [NEXT] Jak włączyć hotspot w iPhone? 3 maja 2022