Ma principale activité professionnelle aujourd'hui, c'est le développement d'outils informatique (web + cli) et j'utilise principalement le langage PHP.
On m'a déjà fait la remarque (à juste titre) que le PHP n'est pas le langage le plus efficace quand on vise la frugalité numérique. Tout d'abord, je tiens à dire que quand j'ai commencé à m'intéresser au développement web (toute fin des années 90), j'étais bien loin d'avoir pris conscience de l'impact environnemental du numérique. C'est juste une parenthèse.
Je pourrais changer de langage aujourd'hui bien entendu mais serait-ce vraiment si efficace ?
Je m'intéresse ici à mon utilisation de PHP (programme cli, applis et sites web, scripts système). Si je devais parler programmation graphique, logiciel embarqué, application web à très fort trafic, les conclusions seraient probablement bien différentes.
PHP est un langage interprété et donc, plus lent qu'un langage compilé, et demande davantage "d'énergie" pour tourner.
Une étude a beaucoup circulé en fin d'année dernière. Elle comparait de nombreux langages à travers l'exécution d'un même algorithme.
Au final, plusieurs critères étaient pris en compte : énergie, temps d'exécution, mémoire utilisée.
Evidemment, les langages interprétés n'étaient pas en tête et d'autres langages interprétés se trouvaient derrière PHP (Ruby, Python, Perl ...). Côté mémoire, il était même devant certains langages compilés.
C'est une étude très intéressante mais on ne peut clairement pas s'arrêter sur la simple performance des langages. Sinon, on devrait utiliser exclusivement C, Rust et C++ pour tous les besoins (et pourquoi pas java). Fin du débat.
Le problème, c'est qu'on ne peut pas tout résumer à un test sur un algorithme spécifique.
Quand on parle de développement web, le langage a une importance mais toute l'infrastructure autour aussi.
Utilise-t-on massivement des bases de données, des APIs distantes ? L'infrastructure est-elle relativement simple ou faut-il de nombreuses machines ?
J'oublie probablement d'autres externalités qu'il faudrait prendre aussi en compte.
Une petite app en PHP tournant sur un serveur mutualisé est-elle au final plus gourmande que l'équivalent en Rust sur une VM ? Un site web utilisant java mais requêtant une base de données sans cesse (sans utilisation de cache) est-elle plus efficace qu'un équivalent en PHP avec un cache bien optimisé ?
Je prends volontairement des exemples un peu "clichés" pour démontrer que le langage est loin d'être le seul élément à prendre en compte. Tout va aussi dépendre du trafic du service dont on parle, du nombre d'utilisateurs, de sa fréquence d'utilisation.
Je ne suis pas convaincu qu'un simple changement de langage aurait systématiquement des résultats significatifs sur l'ensemble des sites / app web.
Bien sûr, idéalement, il faudrait viser la perfection et choisir le langage le plus efficace.
Toutefois, face aux contraintes d'un changement de langage (apprentissage, acquisition de l'expertise suffisante, réécriture du code existant, changement d'infrastructure), dans de très nombreux cas, d'autres optimisations bien plus simples à mettre en place permettraient des gains conséquents et bien plus rapidement.
C'est là dessus que je voulais insister. Avant d'en arriver à vouloir tout réécrire dans un autre langage, on pourrait déjà alléger une bonne partie de ce qui tourne sur le web.
Je pense qu'on peut continuer à utiliser un langage comme PHP et je vais continuer à le faire.
Je ne suis toutefois pas fermé sur ce point là car c'est un sujet qui mérite la réflexion. Je n'ai toutefois pas été réellement convaincu par ce que j'ai pu voir jusque là.
A chaque nouvelle version du langage PHP, on a souvent le droit à de belles amélioration de performances.
Quand c'est possible, faire évoluer son code pour qu'il tourne avec la dernière version du langage et mettre à jour son infrastructure est important.
J'ajoute aussi que le temps du développement d'une application / site web, le matériel nécessaire, l'équipe, sont aussi à prendre en compte dans l'impact environnemental global d'un projet. Je crois vraiment que mesurer "la gourmandise" du langage de programmation n'est vraiment pas suffisant.
Je suis bien entendu prêt à évoluer sur cette réflexion.
Ce site web est un site statique généré par un outil développé en PHP. La génération du site actuel sur mon ordinateur portable prend 0,25 seconde. En Rust, ce serait logiquement plus rapide mais ...
Et n'oublions pas non plus les priorités existantes concernant l'impact environnemental du numérique : mémo.