Negli ultimi anni, si sente spesso parlare della necessità di dare maggiore rilievo ai problemi legati al consumo energetico. Nell'ambito dell'informatica, se ne è sentito parlare spesso in relazione ai dispositivi mobili, rendendolo quasi un problema di usability e user experience generale del dispositivo.
Ultimamente, però, l'accezione di questa problematica sembra tornata ad avvicinarsi a problemi ben più consistenti. L'esplosione del machine learning, le criptovalute e la nuova corsa all'oro digitale (cryptomining) hanno spinto sviluppatori, sistemisti e stakeholder a considerare il problema in modo più generale. Ridurre il consumo energetico significa anche contrastare il cambiamento climatico.
Consumo energetico e linguaggi di programmazione
Non è quindi un caso se un team di ricercatori universitari portoghesi ha tentato di quantificare l'efficienza energetica di diversi linguaggi di programmazione, riassumendo i risultati di questa ricerca in un articolo intitolato Energy Efficiency across Programming Languages, in cui sono stati messi a confronto i tempi di esecuzione, l'utilizzo della memoria ed il consumo energetico di ventisette linguaggi di programmazione ben noti.
Senza troppa sorpresa, C è risultato essere il vincitore incontrastato, mentre Python (uno dei linguaggi più diffusi proprio per problemi di machine learning e cryptomining, sopra citati) è il fanalino di coda, insieme a Perl.
Lo studio spiega che i linguaggi compilati tendono ad essere più veloci ed efficienti dal punto di vista energetico. C e C++ sono quindi tra i migliori, mentre Go è risultato essere il peggiore tra i linguaggi compilati, addirittura peggio di Java o Erlang, nonostante questi abbiano bisogno di una virtual machine per essere eseguiti.
Non c'è da stupirsi troppo se i peggiori linguaggi in termini di efficienza energetica sono proprio quelli interpretati. Allo stesso tempo, nel considerare Python (che è forse il più significativo, considerando anche la sua vasta adozione negli ultimi tempi), va detto che esistono diverse implementazioni di interpreti Python ottimizzati per specifiche piattaforme. Considerato che i test effettuati per lo studio in oggetti sono stati eseguiti su una macchina con CPU Intel Core i5-4460 Haswell @ 3.20 GHz, con 16 GB di RAM e con sistema operativo Ubuntu Server

Non c'è da stupirsi
Tutto sommato, questi risultati sono in linea con quanto originariamente previsto dagli stessi ricercatori. La necessità di interpretare il codice è indice di un maggiore overhead computazionale, e quindi di un inevitabile maggiore consumo energetico. È però interessante poter constatare che, entro le stesse categorie di linguaggi, ci sono differenze piuttosto significative che, in alcuni contesti, è bene tenere in considerazione.