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ł:

Author

Uwielbiam nowe technologie oraz wszelkiego rodzaju gadżety (ale tylko te użyteczne). Pochłaniam nowości i ciekawostki związane z technologią. Uważam, że technologia może nam bardzo pomóc (o ile będzie używana z rozwagą). Z zawodu jestem programistą JavaScript.

Skomentuj