jancovici-updates/true_content/posts/2022/02/change-me-399.md
2023-02-19 11:56:01 +01:00

3 KiB

date li-id li-url title
2022-02-03T07:55:42 6894911248329519104 https://www.linkedin.com/posts/jean-marc-jancovici_quand-j%C3%A9tais-%C3%A9tudiant-jai-appris-quelques-activity-6894911248329519104-2Xjt CHANGE_ME 399

Quand j'étais étudiant, j'ai appris quelques rudiments de programmation informatique. A cette époque, le changement climatique n'était pas vraiment un sujet (je ne pense pas en avoir entendu parler ne serait-ce qu'une fois pendant mes études), et la question de l'empreinte carbone du numérique encore moins (alors que j'ai fait une partie de mes études à Telecom ParisTech).

Ce n'est désormais plus le cas, et des chercheurs portugais ont regardé quelle était l'efficacité comparée, en termes d'énergie utilisée, de vitesse d'exécution, et de mémoire utilisée, de différents langages de programmation informatique : https://lnkd.in/dyqfb9Qn

Pour concevoir un programme qui "fait la même chose", on peut donc utiliser des langages de programmation différents. Un programme est une série d'instructions fournies à l'ordinateur pour partir de données d'entrée et avoir des données (différentes) en sortie, et ces instructions peuvent donc être écrites en divers "langages".

Le lien avec le climat est le suivant :

  • plus un langage demande d'énergie, plus cela signifie qu'il va conduire à ce que l'ordinateur effectue un grand nombre d'instructions élémentaires pour arriver au même résultat
  • plus il est lent, plus il va demander un ordinateur puissant (donc nécessitant plus de matière et d'énergie pour être fabriqué) pour arriver au même résultat dans les mêmes temps
  • plus il est gourmand en mémoire, plus il va demander un stockage capacitaire (donc nécessitant aussi plus de matière et d'énergie pour être fabriqué) pour arriver au même résultat.

Le résultat est que les langages que j'ai appris quand j'étais petit (C et Pascal) sont ceux qui demandent le moins de capacité matérielle pour arriver au résultat dans un temps donné. En contrepartie ils demandent plus de capacité humaine, car ils faut des programmeurs capables de décomposer pas à pas ce qu'ils veulent demander à la machine, et derrière les instructions devront être "compilées", c'est à dire traduites en langage machine (des instructions encore plus élémentaires) en une seule passe.

Les langages appris aujourd'hui dans les écoles d'ingénieur (notamment Python) se classent beaucoup plus mal au niveau de ces performances. Ils sont dits interprétés : le même code peut être utilisé sur plusieurs ordinateurs différents par un "interpréteur" qui rajoute un étage par rapport au compilateur. C'est plus souple pour l'utilisateur mais plus exigeant pour la machine.

Dans ce domaine comme dans beaucoup d'autres, nous avons donc augmenté la performance à mesure que les moyens matériels (des ordinateurs plus puissants mais donc plus gourmands en ressources et en énergie) augmentaient. Aller vers la sobriété demandera aussi de revenir à des langages de programmation plus économes... qu'ils faudra donc enseigner en priorité.