Green computing e green coding: quando la sostenibilità investe il mondo della programmazione
Se comprendere l’impatto ambientale di un dispositivo IT è semplice, lo è meno percepire quello della progettazione software o dei comportamenti online che ogni giorno adottiamo in qualità di utenti. Elettronica e uso del web sono ormai diventati pervasivi nella nostra quotidianità e il loro costo ambientale non è più trascurabile: comprendere questi aspetti e adottare le corrette best practice diventa quindi una necessità.
Green computing: cos’è (con esempi) e perchè è importante
Il 22 aprile cade l’annuale Giornata della Terra, un evento globale volto a celebrare il nostro pianeta e a promuoverne la salvaguardia. Quest’anno la Giornata della Terra è guidata dall’imperativo Invest in Our Planet, investiamo nel nostro pianeta: agire ed innovare, sia a livello sistemico che individuale, per preservare il futuro della Terra e di conseguenza quello dell’umanità.
Sostenibilità è una parola che oggi sentiamo pronunciare sempre più spesso e che leghiamo a tantissimi ambiti diversi, dalla mobilità alla moda, dal food all’energia, passando per settori tra loro molto differenti. Un tema pervasivo e di fondamentale importanza che però ancora poco, nell’immaginario comune, si lega alla sfera del computing e della programmazione.
Eppure green computing, green coding, sustainable coding e altri termini similari esprimono chiaramente l’esigenza crescente di iniziare a considerare temi quali la sostenibilità ambientale e sociale anche in questi ambiti.
Green computing: cos’è?
Il green computing, o green IT, è lo studio dello sviluppo di tutto ciò che concerne il mondo dell’elettronica in ottica di sostenibilità ambientale. L’aspetto della sostenibilità anche in questo ambito iniziò ad essere considerato tra la fine degli anni ’80 e l’inizio degli anni ’90: il progetto Energy Star può essere considerato una delle prime emanazioni concrete di questo pensiero e riguardava l’etichettatura energetica su base volontaria per i monitor. Sempre in quegli anni fu introdotto lo Sleep Mode, la modalità di spegnimento automatico degli schermi dopo un dato periodo di inutilizzo: un elemento che oggi diamo per scontato ma che rappresentò l’inizio della presa in considerazione di tematiche ambientali e di risparmio energetico nella progettazione di prodotti informatici e tecnologici.
Oggi il green computing è evoluto e tende ad adottare un approccio olistico, che prenda in considerazione non la singola macchina ma il sistema nel suo complesso e che analizzi non solo l’utilizzo del prodotto ma tutto il suo ciclo di vita: progettazione, produzione, utilizzo e smaltimento.
Per diverso tempo, quella dell’utilizzo è stata la fase maggiormente esaminata nella valutazione dell’impatto ambientale di un bene elettronico. Oggi però, anche a causa della diffusione pervasiva dell’elettronica nelle nostre vite, questo non è più sufficiente: se un prodotto inquina poco durante il suo utilizzo ma il suo smaltimento causa poi un alto impatto ambientale, questo deve essere tenuto in considerazione. Basti pensare che, secondo i dati del Global E-waste Monitor delle Nazioni Unite, nel 2019 sono state prodotte 53,6 milioni di tonnellate di rifiuti elettronici, circa 7 chili per ogni abitante del pianeta: una cifra già esorbitante, che si prevede possa raggiungere le 74 milioni di tonnellate entro il 2030. Un altro dato allarmante: solo il 17,4% di questi rifiuti elettronici è stato riciclato. È quindi il modello di business nel suo complesso a dover cambiare. Se un tempo il focus era sul tornaconto economico e sulle prestazioni dei dispositivi, oggi non è possibile non considerare anche la sostenibilità, intesa da un punto di vista sia ambientale che sociale ed etico. È un concetto che siamo già abituati a considerare in altri ambiti di consumo, ma la pervasività dell’elettronica nelle nostre vite ci impone di adottare un nuovo paradigma mentale anche in questo settore.
In ambito green computing non è però sufficiente intervenire a livello di singolo dispositivo: oggi occorre modificare interi paradigmi d’utilizzo, ad esempio potenziando l’accesso alle risorse in sharing.
Ad esempio, prevedendo l’accesso da remoto a un supercomputer nel momento in cui le risorse a disposizione del singolo non sono sufficienti per la potenza di calcolo richiesta. In quest’ottica, la classifica Green 500, aggiornata semestralmente, raccoglie i migliori supercomputer al mondo a livello di impatto ambientale. Negli ultimi anni la richiesta energetica dell’apparato informatico a livello globale è cresciuta in maniera esponenziale, ed è destinata ad aumentare ancora di più in futuro: nel 2019 l’ICT ha prodotto 36.441 milioni di tonnellate di CO2eq. È quindi facile comprendere la necessità di classifiche come la Green 500, che tengono in considerazione anche l’impatto ambientale dei sistemi informatici. Proprio per quanto concerne i data center, è ad esempio necessario essere consapevoli del fatto che questi consumano tantissima energia: se da un lato è vero che il costo delle memorie nel tempo si è ridotto notevolmente, dall’altro l’aumento considerevole della memoria immagazzinata ha provocato un impatto ambientale. Immagazzinare tutto indiscriminatamente inizia a non essere più una strada percorribile ed è necessario chiedersi cosa vada conservato e cosa sia invece superfluo.
Paradossalmente l’abbattimento dei costi dell’elettronica ha causato un aggravarsi dell’impatto ambientale del settore.
Costi più elevati richiedevano una maggiore attenzione e parsimonia nell’utilizzo delle macchine, l’abbattimento dei costi ha invece portato a un uso indiscriminato, causando un aumento esponenziale dell’impatto ambientale dell’informatica. L’approccio sistemico è quindi necessario, ma non può prescindere da concetti basilari e ormai noti da tempo, come il power management della singola macchina. Darsi delle linee guida in questo ambito è però ancora oggi complesso: come in molti settori, anche per quanto riguarda il green computing le linee guida sono spesso semplici consigli e non risultano vincolanti. Per le parti hardware e per l’elettronica, capire l’impatto ambientale durante tutto il ciclo di vita del prodotto è più semplice ed immediato, mentre quando si parla di software fare queste valutazioni è più complesso.
Spesso quando si parla di software si fatica a immaginare che anche questo aspetto “immateriale” possa avere un impatto ambientale.
Anche in quest’ambito si ripercuote però la relazione tra diminuzione dei costi economici e incremento dei costi ambientali. Nella scrittura di un software non esiste un’unica strada percorribile: elevati costi legati all’utilizzo delle macchine portavano a una maggiore attenzione nella scrittura del software, percorrendo solo una delle strade possibili e cercando di identificare quella più breve. La diminuzione dei costi di utilizzo dell’elettronica e l’aumento delle prestazioni hanno fatto sì che questa esigenza venisse meno. Inoltre, le maggiori prestazioni hanno ridotto la necessità di scrivere un codice “pulito” in quanto eventuali imperfezioni vengono dissimulate. Da un lato, quindi, vi è un maggior impiego di tempo della fase di scrittura del codice, dall’altro la macchina consuma di più: due istanze che insieme hanno un elevato costo ambientale.
Ogni piccola azione quotidiana online, poi, ha un’impronta ambientale: accedere a un sito internet, caricare una foto su un social network, mandare una mail ecc. In ottica globale, ogni piccolo escamotage per ridurre questa impronta ha importanza: ad esempio, è opportuno valutare se, in fase di costruzione di un sito, inserendo immagini in risoluzione leggermente inferiore è possibile abbreviare anche impercettibilmente i tempi di caricamento di quella pagina, specialmente quando è molto visitata.
Quando si scrive del codice sostenibile è essenziale bilanciare obiettivi aziendali e ambientali.
Non sempre è semplice comprendere fin da subito come ridurre l’impatto ambientale di un codice e della sua scrittura: è importante adottare una strategia flessibile che permetta di migliorare man mano la tecnica di scrittura o, al contrario, di rivedere obiettivi prefissati che risultano però irraggiungibili. Anche per quanto riguarda il green coding è essenziale considerare l’intero ciclo di vita del software, partendo dalla progettazione. È una convinzione ancora diffusa che il green coding, e quindi lo sviluppo di un software particolarmente attento e preciso, possa richiedere tempi troppo lunghi e quindi costi troppo elevati.
Se è vero che scrivere del buon codice richiede tempi più lunghi, è anche vero che questo garantisce una maggiore efficienza, stabilità e facilità di manutenzione nel tempo.
Un codice ben scritto può risultare anche riutilizzabile in software più ampi in cui occorre una funzione specifica: riutilizzare il codice è come riciclare un oggetto e consente di ridurne l’impatto ambientale, perché quel pezzo di codice non andrà riscritto, risparmiando tempo e risorse, anche banalmente a livello di utilizzo delle macchine. Se sul breve periodo costi e sforzi possono quindi essere più elevati, sul lungo periodo l’investimento si ammortizza e risulta vantaggioso.
L’etica del codice ben scritto esiste in realtà da molto tempo in più ambiti, da quelli più tradizionali al mondo dell’hacking: le istanze ambientali, oggi, comportano un ritorno a concetti che con il boom dell’elettronica erano passati in secondo piano.
I possibili esempi negativi sono ancora oggi numerosi. Ad esempio, esistono software che hanno interi pezzi di codice che non vengono utilizzati, o che vengono utilizzati poco. Anche sui dispositivi di uso comune, come smartphone e pc, spesso abbiamo installato software che non vengono usati, ma che si avviano in automatico all’accensione del dispositivo.
Definire dei dettami in ottica di green computing e green coding non è semplice. Oggi esistono dei controlli di power management che consentono ad esempio, se alcune parti di un pc non vengono utilizzate per un determinato lasso di tempo, di spegnerle in automatico per riaccenderle solo all’occorrenza: ci si chiede se sia possibile, in un prossimo futuro, prevedere una simile modularità anche per il codice, di modo che le parti non utilizzate non impattino sull’utilizzo della macchina.
La Fondazione per la Sostenibilità Digitale, la prima Fondazione riconosciuta di ricerca in Italia dedicata ad approfondire i temi della sostenibilità digitale, ha recentemente redatto un paper che mette in relazione il green coding e gli Obiettivi di Sviluppo Sostenibile (SDG) dell’Agenda 2030 delle Nazioni Unite, in cui si evidenzia tra l’altro come “per cogliere le sfide di Agenda 2030 è indispensabile che il software assuma il ruolo di motore di sviluppo sostenibile, da una parte rispettando i criteri di sostenibilità in tutte le fasi del suo ciclo di sviluppo e di vita, dall’altra prevedendo processi di adozione da parte degli utenti che siano orientati anch’essi a supportare comportamenti sostenibili”.
Il codice oggi non impatta solo a livello di consumo energetico, ma sempre di più entra nelle catene decisionali delle grandi aziende, che si affidano al software per prendere decisioni strategiche.
Scrivere un “codice sostenibile” significa quindi non solo pensare al suo impatto ambientale, ma anche scrivere un codice che a sua volta promuova idee sostenibili e permetta di fare scelte etiche.
A livello europeo, anche la European Green Digital Coalition, fondata nel 2021 dai CEO di 26 grandi aziende, si occupa di promuovere una trasformazione digitale green in UE. In generale, oggi, fondazioni ed aziende tendono a promuovere una maggiore informazione sull’uso consapevole dell’elettronica e dell’informatica, in grado di arrivare fino agli utenti finali, portandoli a considerare l’impatto ambientale delle loro scelte digitali. Promuovere un cambiamento di pensiero è fondamentale, e questo deve partire anche dalle piccole azioni quotidiane: qual è l’impatto ambientale di una ricerca su Google o della connessione a un social network? Perché consideriamo normale spegnere la luce quando lasciamo una stanza ma lasciamo accesi interi software non utilizzati che lavorano in background sui nostri dispositivi?
L’uso consapevole degli strumenti digitali da parte degli utenti è fondamentale per iniziare ad avviare un cambiamento in quest’ambito. Per rendere più sostenibile il mondo IT, ogni scelta è importante: dal singolo utente alle aziende, dallo sviluppo del software alla gestione di un data center.
Le scelte lato utente hanno la loro rilevanza, ma la hanno anche quelle degli sviluppatori: ad esempio anche il linguaggio di programmazione usato può avere un diverso impatto ambientale. Questo perché, a seconda del software, l’utilizzo di diversi linguaggi di programmazione porta a diversi investimenti in termini di tempo, energia e memoria necessari. Lato utente, rimane in ogni caso fondamentale evitare un utilizzo compulsivo delle tecnologie, tornando a un uso maggiormente consapevole e attento dei device a nostra disposizione: se un tempo questo veniva fatto per ragioni di costo economico, oggi non è più possibile ignorare il costo ambientale delle nostre scelte.