L’efficacité énergétique dans le monde de la programmation

L’univers de la programmation est en constante évolution : il existe aujourd’hui de nombreux outils et langages, et de nouveaux apparaissent sans cesse. Chacun possède son utilité et ses particularités, ce qui offre une grande diversité pour toutes les personnes souhaitant utiliser ces technologies. Dans le contexte actuel de sensibilisation à la consommation énergétique, on peut alors se poser la question : quel est l’impact écologique des différents langages de programmation ?

Par impact écologique, on parle ici de la consommation énergétique que peut avoir l’exécution d’un programme. Une étude nommé « Energy Efficiency Across Programming Languages », et mené par six chercheurs de différentes universités portugaises a été réalisé pour répondre à cette question, en comparant plusieurs langages selon différents critères, dont la consommation énergétique.

Méthodologie et Résultat

Durant cette étude, 27 langages de programmations très répandus ont été sélectionnés. On peut les classer selon leur paradigme de programmation, ou selon leur mode d’exécution. Certains langages sont compilés, comme C++ ou Rust. D’autres sont interprétés, comme Python ou Perl et enfin, certains utilisent une machine virtuelle, comme pour Java ou C#. Le tableau suivant, qui provient de l’étude, nous permet de visualiser tous les langages sélectionnés.

Pour évaluer équitablement chacun de ces langages, des programmes résolvant les mêmes problèmes de programmation ont été créés, et pour minimiser au maximum l’impact de variables externes, les mesures ont été prises sur des machines standardisées. Les performances ont été mesurées sur trois critères : le temps d’exécution, la mémoire utilisée et la consommation énergétique. On peut observer sur l’image suivante les résultats :

Chaque tableau correspond à un critère, et la lettre entre parenthèse indique le mode d’exécution du langage. Les résultats se lisent de la manière suivante : les langages sont classés du plus performant au moins performant avec une valeur. Le langage le plus performant a la valeur 1.00, et les valeurs associées aux autres langages permettent de voir combien de fois ils sont moins performants par rapport au premier. Ainsi, si on prend le critère de l’énergie, le langage le performant est C, et on peut voir que Python est 75.88 fois moins performant dans ce domaine. Analysons maintenant ces résultats.

Globalement, on peut voir que langages compilés sont les plus efficaces. On retrouve pour l’énergie et le temps le même trio de tête : C, Rust et C++. Cela parait logique, un programme compilé est directement traduit en langage machine pour qu’il puisse être exécuté par le processeur. Son exécution demande moins d’effort pour la machine.

D’un autre côté, les langages interprétés sont souvent les moins performants, et ce, dans chacun des critères. On peut voir que Python, Perl et Lua se situent souvent vers la fin du classement, mise à part pour la mémoire avec Python qui remonte dans la première moitié.

Enfin, les langages utilisant une machine virtuelle se situent en général dans le milieu du classement, comme Java qui fait partie du top 5 pour l’énergie et le temps, mais qui descend à la fin du classement pour la mémoire, ou C# qui se situe en général vers la moitié.

L’étude nous montre aussi que des différences entre langages avec le même mode d’exécution existent. Ainsi, parmi les langages compilés, Rust sera plus pertinent pour certaines tâches que le C++. Parmi les 4 paradigmes de programmation dans lesquels on peut placer les langages, l’étude nous donne lequel est le plus performant, et il revient que la programmation impérative se place comme étant la meilleure selon les critères.

On pourrait alors se dire que cette étude nous donne une solution simple pour réduire notre impact et notre consommation d’énergie lorsque l’on choisit un langage de programmation. En effet, c’est le but premier de cette étude : aider les développeurs et ingénieurs logiciels à choisir un langage lorsque la question de la dépense énergétique est un paramètre important pour leur projet. Cependant, cela veut-il dire qu’il faudra à l’avenir se tourner vers les langages les plus performants ?  Est-ce vraiment ce qu’il y a de mieux à faire ?

Faut-il arrêter d’utiliser les langages les moins performants ?

Dans le contexte actuel, cette question n’est pas stupide. Il est de plus en plus important de prendre conscience de l’impact que peuvent avoir les outils qu’on utilise au quotidien, et cette étude semble nous donner la réponse pour les langages informatiques. Cependant, la réponse est nuancée. En effet, on pourrait se dire qu’il faut arrêter d’utiliser des langages qui consomment beaucoup pour revenir à des langages moins énergivore et plus écoresponsable. Cependant, c’est oublier tous les autres facteurs à prendre en compte. La facilité d’utilisation, la compatibilité, la flexibilité, le support de la communauté, et la pertinence pour la tâche à accomplir sont autant d’autres critères importants lorsqu’on choisit un langage pour un projet.

Il serait contre-productif d’abandonner un langage de programmation simplement car il est moins efficace d’un point de vue énergétique. Pour prendre un exemple, Python est un langage de haut niveau qui est facile à prendre en main pour des débutants, et qui facilite l’apprentissage. C’est aussi un langage très utilisé dans de nombreux domaines, comme le traitement des données et l’intelligence artificielle, où il dispose de nombreuses bibliothèques utiles, qui évite de partir de zéro pour un projet. Python est donc un choix judicieux pour de nombreux projets, malgré ses performances.

Un autre moyen pour réduire la dépense énergétique d’un programme serait d’optimiser la manière dont il est écrit. Pour cela, choisir les algorithmes adaptés au problème, optimiser le code ou utiliser des bibliothèques pour l’optimiser sont aussi de bons moyens pour augmenter les performances. Cependant, cela passe pour les développeurs et les personnes qui souhaitent utilisées ces langages par une bonne compréhension du langage et des concepts qu’il utilise. En ce sens, notre formation et nos connaissances jouent aussi un rôle important sur l’impact que peut avoir les langages informatiques.

Enfin, la question de l’impact environnemental des consommations d’énergie liées à l’informatique ne peut être résolu simplement en se demandant s’il faut changer de langage de programmation ou non. L’impact de l’informatique sur l’environnement ne se résume pas seulement à l’exécution d’un programme. D’autres facteurs jouent également un rôle majeur, comme la conception des systèmes informatiques ou l’extraction de matériaux pour les différents composants informatiques.