Zeleno programiranje: Odabir ekološki prihvatljivog programskog jezika

Zeleno programiranje: Odabir ekološki prihvatljivog programskog jezika

IT i očuvanje okoliša

Prema nekim istraživanjima, podatkovni centri širom svijeta zaslužni su trenutno za oko 2% ukupne potrošnje električne energije. Kad se tome pridoda potrošnja u ostalim dijelovima ICT sektora, situacija postaje još ozbiljnija.

Nadalje, do 2040. godine ICT sektor bi u globalnom ugljičnom otisku trebao sudjelovati sa čak 14%. Što je dosta više nego što to radi čitava avio industrija, vrlo česti predmet kritike po tom istom pitanju.

Čak i ako niste neki posebno veliki pristaša ekološki održivog pogleda na svijet, velika potrošnja električne energije će vas svakako pogoditi na vlastitoj „mikro razini“. To jest, na sve većim računima za potrošnju električne energije. Zato je sasvim razumljivo da se sve više pažnje poklanja tome kako smanjiti potrošnju energije u ICT sektoru, jer se tako mogu postići brojni pozitivni učinci na lokalnoj i na globalnoj razini.

 

Potrošnja i ušteda električne energije

Potrošnja električne energije u ICT (odnosno, u IT sektoru kojim ćemo se malo detaljnije pozabaviti u ovom tekstu) ovisi o nekoliko bitnih faktora. To su:  

  • Hardverske komponente: Ovo ne treba posebno obrazlagati. Ako su hardverske komponente u nekom IT sustavu štedljivije, onda bi u pravilu trebala biti manja potrošnja električne energije. Za kakvim se sve dosjetkama u projektiranju i implementiranju hardverskih komponenti pri tome može posegnuti, ostaje tema za neku drugu priliku. I za autora koji je upućeniji u takve teme od potpisnika ovog teksta.
  • Sistemski softver: Pod sistemskim softverom podrazumijevamo neophodne softverske komponente (operativni sustavi i drugi sistemski orijentirani alati) koje omogućavaju da hardver spomenut u točki 1 radi na što štedljiviji način. Na primjer, različiti oblici dinamičkog dodjeljivanja hardverskih resursa omogućavaju da se ista količina hardverskih resursa upotrijebi za opsluživanje veće količine softverskih zahtjeva u nekom periodu. Što je puno isplativija alternativa (i u pogledu potrošnje električne energije) od jednokratnog povećanja hardverskih resursa zbog povremenih „vrhova potrošnje“. Nažalost, ni ovo nije detaljnija tema današnjeg teksta.
  • Organizacija i arhitektura aplikacija: Ako je poduzeto sve što je moguće u pogledu potrošnje električne energije prema točkama 1 i 2, sljedeće mjesto gdje se mogu postići vrlo ozbiljne uštede energije je optimalna organizacija i arhitektura aplikacija. Evo dva jednostavna primjera. Umjesto da aplikativni dio sustava bude izveden u obliku velikih monolitnih aplikacija (što posljedično zahtijeva veće korištenje procesora, memorije i diska, a samim tim i energije), takva aplikacija se možda može podijeliti u veći broj manjih dijelova ili mikroservisa. Svaki od tih dijelova se nakon toga koristi po potrebi uz smanjenu potrošnju resursa, to jest energije. Kod web aplikacija su mogući različiti oblici optimizacije u obliku straničenja prikaza podataka, korištenja više formata istih slika kod njihovog dohvata ovisno o potrebi i slično. Sve skupa vrlo zanimljivo kao tema posebnog teksta. Međutim, već pogađate - ni to nije glavna tema današnjeg teksta. Pa što je onda?
  • Programski jezici i razvojni alati: Ako je sve prije navedeno organizirano i napravljeno na optimalan način, onda dolazimo do četvrte točke – ujedno glavne teme današnjeg teksta. A to je odgovor na pitanje kako korištenje različitih programskih jezika može utjecati na potrošnju energije. Tema koja se sve više istražuje i uzima u obzir u softverskoj industriji.

Zeleno programiranje i programski jezici

Do sada ste se u različitim tekstovima sigurno susreli s različitim rang listama programskih jezika prema različitim kriterijima. Na primjer, prema popularnosti među programerima, prema brzini izvođenja programskog koda, prema količini dodatnih uputa i materijala, prema potrošnji memorijskih resursa i tako dalje. Međutim, sigurno ste vrlo rijetko imali priliku vidjeti poredak programskih jezika prema količini potrošene električne energije za softver napisan u pojedinom jeziku. Nešto čime ćemo se detaljnije pozabaviti u današnjem tekstu.

 

Slika_01_za_programiranje_zeleno_programiranjse_2025.jpg

https://www.akcp.com/blog/the-real-amount-of-energy-a-data-center-use/:  Trenutna i predviđena potrošnja električne energije u ICT sektoru.

 

Polazne točke za dijelove današnjeg teksta možete sami detaljnije proučiti u radu objavljenom na sljedećoj adresi: https://greenlab.di.uminho.pt/wp-content/uploads/2017/10/sleFinal.pdf

Autori istraživanja iz Portugala su 13 različitih standardnih testova iskoristili za testiranje 27 različitih programskih jezika u pogledu njihove brzine, trošenja radne memorije i energetske učinkovitosti. Programski jezici su izabrani tako da budu zastupljene sve popularne kategorije – funkcionalni, imperativni, objektno orijentirani i skriptni jezici. Naravno, kod nekih od jezika dolazi do preklapanja, pa su uključeni u veći broj kategorija. Na primjer, programski jezik C++ je imperativni, ali ujedno i objektno orijentirani programski jezik. Detaljan popis testova i programskih jezika možete vidjeti na pratećoj slici uz tekst, ili u originalnom dokumentu.

 

Slika02-programiranje-zeleno-programiranje-2025.jpg

https://www.tiobe.com/tiobe-index/:  Trenutna popularnost programskih jezika i trendovi.

 

Nakon detaljno provedenih testova, istraživanjem su potvrđeni zapravo donekle očekivani rezultati. Programski jezici koji najbrže izvode zadane testove (C, C++, Rust) su u pravilu najštedljiviji, jer za najmanje vremena obave zadano. To znači da su hardverske komponente koje ih izvode najkraće zauzete, pa zato troše najmanje električne energije. Također očekivano, skriptno orijentirani jezici (kao što su Python, Perl ili PHP – spomenimo najpoznatije) kod kojih se programski kod u pravilu izvodi na interpreterski način (umjesto nakon punog prevođenja) najveći su potrošači električne energije, odnosno najmanje „zeleni“. Pri tome je dodatno zanimljivo to da su u pogledu potrošnje, razlike veće nego što bismo to možda očekivali na prvi pogled.

Kakve posljedice imaju ovi, zapravo pretpostavljeni, ali spomenutim radom i eksperimentalno potvrđeni,  rezultati u praksi?

 

Stvarni svijet

U velikom broju tvrtki, kad pročitaju ovaj tekst (ili originalno istraživanje), sigurno će doći do masovnih otpuštanja programera. Vlasnik tvrtke koja ima širom svijeta korištene webshopove okupit će svoje djelatnike i objaviti im da ih odmah sve otpušta, jer unatoč izvrsnim poslovnim rezultatima i zadovoljstvu korisnika, nije nikako dobro što koriste energetski neučinkovit programski jezik PHP kao glavni alat za razvoj. Umjesto toga zaposlit će C, C++ ili Rust programere i krenuti u razvoj od nule.

Druga tvrtka, gdje se uglavnom koristi Python za pripremu različitih AI rješenja, bit će malo popustljivija i dozvolit će svojim djelatnicima da probaju u roku od mjesec dana postati vrhunski programeri u „zelenim jezicima“, kako bi tvrtka u potpunosti napustila spori i energetski rasipan Python.

 

Slika03_-_programiranje_zeleno_programiranje_2025.png

Energentska učinkovitost programskih jezika: Prema https://greenlab.di.uminho.pt/wp-content/uploads/2017/10/sleFinal.pdf

 

Naravno, neće se dogoditi ni jedno ni drugo. Vlasnici tvrtki (pogotovo ako su zadovoljni poslovanjem) neće baš previše žaliti za većom potrošnjom električne energije na mikro razini, a pogotovo ne za ugljičnim otiskom vlastitog webshopa na globalnoj razini.

Pa može li onda uopće priča o zelenim programskim jezicima i programiranju utjecati na stvarni svijet? Prije nego odgovorimo na ovo pitanje, uvedimo u raspravu još nekoliko činjenica iz tog istog stvarnog svijeta.

Prvo, kod većine složenih IT rješenja situacija nije ni izbliza tako čista u pogledu korištenja programskih jezika kao u provedenom testiranju. Na primjer, u različitim projektima gdje se zbog jednostavnosti i brzine pripreme rješenja koristi Python, to nikako ne znači da su apsolutno svi dijelovi sustava napravljeni od nule u tom istom sporom i energetski neučinkovitom jeziku. Umjesto toga, u rješenja se često uključuju visoko optimizirane komponente ili biblioteke napravljene u nekima od najbržih i najštedljivijih programskih jezika. Python u takvom slučaju više predstavlja nekakav oblik nadzornika čitavog sustava, a brzina cijelog sustava je daleko veća nego kad bi se cjelokupno rješenje napravilo isključivo u Pythonu.

 

Slika04_-_programiranje_zeleno_programiranje_2025.jpg

Način testiranja: Vrste testova i programskih jezika koji su uključeni u provjeru energetske učinkovitosti.

 

Drugo, kod vrlo složenih sustava kod kojih se mobilna aplikacija spaja na web servis, kako bi prikupila i spremila sve potrebne informacije na temelju jednog ili više izvora podataka, gotovo sigurno će se sve skupa napraviti (ali i kasnije održavati) mnogo brže u različitim programskim jezicima pogodnim za pojedine segmente sustava od cjelokupnog razvoja u jednom jeziku. Drugim riječima (ako sve svedemo na količinu potrošene električne energije) cjelokupno rješenje u potpunosti razvijeno u programskim jezicima C, C++ ili Rust (ako se to uopće može napraviti), bilo bi sigurno energetski učinkovitije od nekoliko različitih tehnologija koje se uobičajeno koriste za razvoj takvih sustava. Ali bi se zato potrošilo puuunnnooo više energije za razvoj ili održavanje takvih sustava.

Situacija u velikoj mjeri podsjeća na „zelenu besprijekornost“ električnih automobila u odnosu na „smrdljive zagađivače“ kao što su dizel ili benzinski motor. Bar tako dugo dok se u analizu ne uključe svi dijelovi potrebni za proizvodnju i zbrinjavanje električnih automobila. Od rudnika za dobivanje materijala potrebnih za proizvodnju baterija, do zbrinjavanja otpada nakon korištenja.

Treće – o tome smo malo detaljnije pisali u prošlom „slavljeničkom“ broju u tekstovima o PHP-u te još više o Cobolu, na planetu jednostavno nema dovoljno financijskih i ljudskih resursa kako bi se milijarde i milijarde linija naslijeđenog programskog koda u starim sustavima zamijenile alternativom u zelenim programskim jezicima.

Četvrto, zbog ovog ili onog razloga, veliki broj programera - a u slučaju Pythona (te još ponekog programskog jezika) i neprogramera - jednostavno ne „govori“ najbolje jezike iz provedenog istraživanja. Često iz vrlo prozaičnog razloga - osnove PHP-a ili Pythona je bitno jednostavnije naučiti nego biti briljantan programer za C++. Upravo zbog te razlike u krivulji učenja programskih jezika, čak i kad bi postojala volja te sredstva da se svi programeri širom svijeta natjeraju na korištenje najboljih jezika, rezultiralo bi time da bi konačna rješenja na kraju možda bila energetski učinkovitija, ali bi se zato nebrojeno više kilovata energije potrošilo za vrijeme učenja programskih jezika, nego kod samog programiranja.

 

Je li onda zeleno programiranje samo mit?

I da i ne. Bar tako dugo dok AI u potpunosti ne riješi sve probleme nabrojene u prethodnom dijelu teksta tako da sve postojeće softverske proizvode zamijeni onima napisanima u energetski najučinkovitijim razvojnim alatima, živim programerima će biti teško izboriti se sa spomenutim preprekama.

To ipak ne znači da se ne može ništa poduzeti. Čak i na vlastitoj mikro razini. Slijedi nekoliko savjeta što možete napraviti, čak i ako dalje namjeravate koristiti iste razvojne alate kao do sada.

Prvo, bez obzira to koji programski jezik koristite ili namjeravate koristiti, možete se malo potruditi i pronaći njegovu energetski optimalnu varijantu. Znači, bez obzira na to je li riječ o C++ ili Pythonu, možete probati prebaciti razvoj u tom jeziku na onu verziju (proizvođača) koja je energetski najdjelotvornija. Teško da takva testiranja možete provoditi sami zbog ograničenosti vlastitih resursa, ali sigurno možete pratiti što o tome misle i pišu nezavisni izvori.

 

Slika05-programiranje-zeleno-programiranje-2025.jpg

Rezultati testiranja: U različitim testovima na vrhu su stalno isti programski jezici.

 

Drugo, nakon što izaberete optimalan razvojni alat, potrudite se da ga zaista tako i koristite. Na primjer, velik broj razvojnih alata, odnosno programskih jezika, nudi brojne mogućnosti konfiguriranja. U pravilu su neke od postavki korisnije samo kod razvoja, jer nude bilježenje brojnih grešaka i problema tijekom izvođenja, kako bi ih programer što jednostavnije riješio. U pravilu takve postavke rezultiraju nešto sporijim, odnosno u konačnici energetski neučinkovitijim izvođenjem programskog koda.

Istovremeno, postoje brojni optimizacijski parametri zaduženi za to da konačno rješenje bude brže i djelotvornije. Iz ovog ili onog razloga (najčešće obične lijenosti), programeri često ne pripremaju dvije konfiguracije parametara. Jednu za razvoj, a drugu za isporuku korisniku. A ovo doista nije veliki korak, koji bi softverska rješenja učinio zelenijima.

Treće, kod samog pisanja programskog koda možete paziti na to da vam nikad ne zaostanu neoptimizirani dijelovi. Na primjer, da se programska petlja izvodi do svojeg kraja za cijeli skup podataka, iako ste u njoj već pronašli i obavili što vam je potrebno, pa je umjesto toga napustite prijevremeno. Ili da u memoriju učitavate veći broj stupaca iz baze nego što vam je stvarno potrebno (dobro poznata i krajnje neučinkovita „SELECT *“ konstrukcija). Da ne nabrajamo dalje. Uz takve i slične greške, čak i zeleni programski jezici mogu izgubiti svoju osnovnu boju.

Četvrto, u praksi je teško čitav sustav razvijen u jednom jeziku zamijeniti alternativom u zelenijem alatu. Međutim, ako radite potpuno novi i relativno nezavisni komad softvera, možda u tom slučaju možete promijeniti vlastite navike te upotrijebiti djelotvorniji jezik. Na primjer, iz nekog razloga pojavila se potreba da u vaš sustav često morate učitavati podatke iz nekakve CSV datoteke. Kao „PHP guru“ biste to inače brzo, ali energetski neučinkovito, razvili u PHP-u. A možda biste ovaj nezavisni komad softvera mogli napraviti i u C, C++ ili Rustu.

Peto, ako ste u prilici, tijekom razvoja softvera probajte koristiti različite, danas dostupne AI pomoćnike.

Čak i ako vam ne pomognu da napravite rješenje koje troši manje energije, skoro sigurno će vam pomoći da ga napravite brže. A samim time potrošite manje energije bar tijekom razvoja.

Iako se ni jedno od nabrojenog ne čini kao nešto posebno zeleno, znate onu staru: „zrno po zrno, pogača“. Uz pravilno korištenje svega nabrojenog i još ponečeg toga dodatnog čega se sami sjetite, i najlošiji programski jezik može postati puno zeleniji. Nažalost, vrijedi i obrnuto.

 

Koliko znaju domaći programeri o toj temi

Autor teksta imao je priliku postaviti pitanja o zelenom programiranju i programskim jezicima u okviru grupe „Azure + .NET“, čiji se sastanci održavaju jednom mjesečno u Sky Office zgradi. Grupa obuhvaća programere i sistemski orijentirane IT stručnjake s fokusom na Microsoft tehnologiji.

Većina prisutnih je odgovorila na to onako kako se otprilike gleda na tu istu stvar širom svijeta. Čuli su za to, čini se kao dobra stvar, ali zbog čitavog niza razloga (kratki rokovi za dovršetak softvera, nezainteresiranost ulagača, i tako dalje) jednostavno nemaju mogućnosti ni vremena da taj pristup za razvoj softvera trenutno uključe u svoje projekte.

 

Kako mjeriti potrošnju energije?

Ako želite poduzeti nešto u vezi sa smanjenjem količine energije potrošene u vlastitim aplikacijama, jedan od nezaobilaznih dijelova je precizno mjerenje potrošnje energije. Kako ćete znati jeste li postigli bilo kakav napredak u ovom pogledu, ako to ne možete precizno izmjeriti?

Ako se do sada niste susreli s ovim problemom, možda kao prva ideja pada na pamet posezanje za posebnim hardverom kojim biste mjerili potrošnju. Srećom, može se to napraviti bitno jednostavnije i potpuno softverski. Odgovor se krije u skraćenici RAPL (Running Average Power Limit). Intelovi (ali i drugi moderni) procesori omogućavaju precizno mjerenje potrošnje vlastite energije, ali da bi stvar bila ljepša, i drugih hardverskih komponenti u sustavu. Skoro pa idealno kao podrška za pisanje zelenog softvera.

O tome kako se može iskoristiti RAPL, možda više riječi nekom drugom prilikom.

 

Zaključak

U praksi je vrlo teško postojeća kompleksna softverska rješenja (i možda energetski vrlo neučinkovita) zamijeniti nečim zelenijim u potpuno novom razvojnom alatu. Ipak, i u postojećim razvojnim tehnologijama možete probati razvijati softver tako da bude energetski što učinkovitiji.

Nadamo se, i na temelju nekih od ideja iz ovog teksta. Ako ništa drugo, možda će vas ovaj tekst potaknuti da na razvoj softvera počnete gledati i sa „zelene strane“.

Ocijeni sadržaj
(0 glasova)

Vezani sadržaj:

  • FuturaIT Workstation PC

    Moćan stroj za profesionalce

    Procesor s 16 jezgri, 48 GB radne memorije i moćna grafička kartica omogućuju ovom računalu odlične performanse u profesionalnim aplikacijama. Pritom je vrlo stabilno i  prilično energetski učinkovito, s obzirom na relativno umjerenu potrošnju energije

  • Programiranje: Zašto je programski jezik Cobol još uvijek živ?

    Zašto je još uvijek živ?

    Pravi "djedica" na području programskih jezika.

  • VIDI.edu: Projekti i praksa su most između teorije i karijere

    Projekti i praksa za shvaćanje stvarnih poslovnih problema

    Vodeći hrvatski tech fakulteti i učilišta predstavili su svoj način pripremanja studenata kroz programe stručnih praksi i rada na stvarnim projektima. 

  • Futura IT Endorfy GamerPC

    Atraktivan mainstream gamer

    Atraktivno mainstream računalo kompaktnih dimenzija koje zahvaljujući ugrađenoj modernoj grafičkoj kartici omogućuje vrlo dobre performanse u svim novijim igrama, uz nadasve tih rad i umjerenu potrošnju energije.

  • Huawei: Gigant i na području razvoja softvera

    Huawei i razvoj softvera

    Mobilni uređaji, pametni satovi, softver u oblaku...

// možda će vas zanimati

Newsletter prijava


Kako izgleda naš posljednji newsletter pogledajte na ovom linku.

Copyright © by: VIDI-TO d.o.o. Sva prava pridržana.