On 22/02/2022 20:20, Davide Prina wrote: > però non è sempre così vero, dipende da cosa devi fare. Per alcune cose > puoi metterci più o meno lo stesso tempo su qualsiasi linguaggio di > programmazione.
Esattamente. La perfetta risposta di ogni programmatore: "dipende" :D Per prima cosa bisogna distinguere di quale ambiente stiamo parlando, e di quale uso. Se parliamo di software per desktop, scrivere software efficiente consente, per esempio, di risparmiare batteria su un notebook/tablet. A parte l'ovvio risparmio ambientale, consente di lavorare per più tempo senza bisogno di ricaricare. Se parliamo di software su server/cloud, scrivere software efficiente (sia come CPU che come RAM) consente di servire più client con meno server. Ma d'altro canto bisogna vedere anche la velocità di sviluppo/update e effettivamente quanto e come il software viene usato. > In un altro articolo, che ora non ho cercato, che ho letto poco tempo fa > era indicato che, qualcosa come il 70-80% di tutte le applicazioni web > sono realizzate in PHP (nello studio indica un consumo medio di 27.64), > passare da PHP ad altro linguaggio potrebbe far risparmiare una quantità > di energia non indifferente. Prendo questo come esempio per espandere il concetto. Un sito in PHP, nel 99% dei casi, è niente più che un layer sottile tra il database e il client HTTP. PHP di suo, su un PC moderno, serve tranquillamente 100-200 connessioni al secondo. Lo stesso sito in JS serve 4-500 connessioni al secondo. In Go schizza a 100-200.000 al secondo. In Rust arrivi a 1-2 milioni al secondo. Il tutto senza particolari ottimizzazioni. Ma il problema non è il linguaggio, ma il DB. Se il DB non riesce a gestire più di 20 query al secondo, non importa che linguaggi ci metti davanti. Sono tutti sufficienti. Nel momento in cui devi fare qualcos'altro (resize di immagini, analisi o conversione di video/audio, etc.) allora ha senso lasciare perdere tutto e concentrarsi su linguaggi come Go, Rust, C/C++, etc. E infatti le funzioni di elaborazione immagini di PHP sono scritte in C/C++, le funzioni di analisi dati di Python sono scritte in C/C++, buona parte dei tool della toolchain di JS (compilatori, bundler, ottimizzatori, per finire con Deno) è ora scritta in Go o Rust. In pratica: "dipende" :) > infatti con l'assembly si dovrebbe arrivare ad ottenere la maggior > efficienza; avevo notato anch'io l'assenza. Questo non è più vero da diversi anni. I compilatori e gli ottimizzatori scrivono assembly migliore di praticamente qualsiasi umano (tranne software estremamente semplici), per il semplice fatto che ogni CPU ha bisogno di un assembly diverso. E non parlo solo di ARM vs x86, ma per esempio un Core2, un i5, un Celeron e un Ryzen5 hanno cache diverse, pipeline diverse, diversa architettura di accesso a cache e RAM, diverso "hyperthreading". Per alcune applicazioni l'impatto è enorme. Per la maggior parte è minimo. :) Per lo stesso motivo sta pian piano diventando falso anche che C sia più efficiente. Alcune astrazioni di Rust e C++ vengono ottimizzate meglio del basso livello di C. Bye.