Site WWW de Laurent Bloch
Slogan du site

ISSN 2271-3905
Cliquez ici si vous voulez visiter mon autre site, orienté vers des sujets moins techniques.

Pour recevoir (au plus une fois par semaine) les nouveautés de ce site, indiquez ici votre adresse électronique :

Pourquoi l’IA ne signe-t-elle pas la fin de la programmation ?
Deux articles de Matt Welsh et de Daniel Yellin pour les CACM
Article mis en ligne le 7 mars 2023
dernière modification le 10 mars 2023

par Laurent Bloch

En 1969 j’ai débuté en informatique, d’abord comme analyste-programmeur, puis comme ingénieur système, et deux ou trois ans plus tard, il y a donc un demi-siècle, j’ai lu les premiers articles qui annonçaient la disparition de ces métiers, qui non seulement existent toujours, mais pour lesquels l’offre d’emploi augmente chaque année. Quels sont les arguments à l’appui de la thèse de leur disparition ? Les ordinateurs seraient de plus en plus perfectionnés, et même « intelligents », on pourrait leur « parler », ils « comprendraient » nos « besoins » et sauraient réaliser le programme nécessaire à leur satisfaction. Tous ces arguments relèvent de l’intelligence artificielle, discipline elle-même sujette à des hauts et des bas. La thèse de la fin de la programmation ressort périodiquement, s’évanouit temporairement, puis connaît une résurgence : il semble que nous soyons aujourd’hui dans une telle phase de résurgence, stimulée par des résultats spectaculaires obtenus avec le système d’intelligence artificielle ChatGPT, qui permet effectivement de créer des programmes. Dans certaines conditions.

Dans un article précédent consacré au décodage de logiciels de cyberattaque j’expliquais pourquoi, dans ce cas particulier, une compétence solide en science de la programmation était indispensable. Mais il fallait une réfutation plus générale de la thèse idiote de la fin de la programmation.

Les promesses de ChatGPT

ChatGPT m’avait plongé dans une certaine perplexité, lorsqu’arriva sous mon paillasson le numéro de janvier 2023 des Communications of the Association for Computing Machinery (CACM), l’organe de la principale société savante informatique, avec un article intitulé justement The End of Programming, signé de Matt Welsh, un homme qui après un doctorat à Berkeley fut professeur d’informatique à Harvard, puis directeur de l’ingénierie chez Google et chez Apple : je me suis dit que d’une plume si compétente j’allais enfin apprendre le fin mot de l’histoire [1]. Hélas, rien que les fadaises habituelles, dont il faut d’ailleurs remarquer qu’elles transmettent une certaine part de vérité : il est exact qu’aujourd’hui une grande partie de la programmation en entreprise consiste à assembler dans des frameworks des templates et des programmes de bibliothèque, et que les environnements de programmation par objets permettent au programmeur de simplement déclarer une classe d’objets, dont le système produira ensuite toute les méthodes. C’est très puissant, cela accroît considérablement la productivité, à un prix : personne ne sait plus très bien qui a écrit le programme. En tout état de cause, ce n’est pas de la programmation par l’ordinateur, c’est de l’utilisation de programmes écrits par d’autres.

ChatGPT ne fait pas autre chose, mais il le fait à une échelle grandiose : le système explore les dépôts publics de logiciels tels que GitHub, il interroge le site fameux Stack Overflow [2], il effectue quelques analyses plus ou moins subtiles, et il donne un programme, copié sur les réponses les plus fréquentes aux millions de requêtes qu’il a effectuées.

Les résultats peuvent être impressionnants, mais on peut d’emblée adresser un premier reproche à cette méthode de programmation : si elle est apparemment économe en compétences humaines, elle est extrêmement coûteuse en matériel et en énergie. La lecture et l’analyse (même sommaire) de millions de programmes mobilise des moyens de calcul considérables, lesquels à leur tour consomment énormément d’énergie électrique (sans parler de l’empreinte immobilière). Microsoft a dû investir dix milliards (oui, milliards) de dollars pour que ChatGPT donne ses résultats spectaculaires.

La seconde critique qui vient tout de suite à l’esprit : on ne peut ainsi rien produire de vraiment nouveau, on ne fait que copier plus ou moins intelligemment des programmes déjà écrits.

Heureusement, le numéro suivant des CACM devait apporter aux allégations du professeur Welsh une réplique circonstanciée.

Huit bonnes raisons de continuer la programmation

Dans ce numéro de février 2023 des CACM, Daniel Yellin, vice-président d’IBM Cloud et Distinguished Engineer at IBM, donne son point de vue sur The Premature Obituary of Programming (Une nécrologie prématurée de la programmation). Je note qu’il ne mentionne ni ChatGPT ni le point de vue de Matt Welsh, mais qu’il aborde de façon plus générale le deep programming (DP), enfant plus ou moins légitime du deep learning (DL), en étudiant ses deux représentants les plus en vue, Codex d’OpenAI, utilisé par le projet Copilot de GitHub, et AlphaCode de Deepmind. Ces réalisations ne sont pas sans proximité avec ChatGPT, il s’agit manifestement du même courant de pensée.

Daniel Yellin admet tout à fait que les millions de lignes de code des dépôts de logiciel libre emmagasinent quantité de méthodes de programmation de nature à résoudre quantité de problèmes. De problèmes qui ont déjà été posés et résolus. Ce qui doit aider à résoudre de nouveau le même problème, ou un problème de la même famille dans un environnement différent. Mais l’auteur nous soumet une liste d’objections, qui énoncent autant de situations où il faudra bien se mettre à programmer de novo :

 L’informatique et ses applications évoluent, entre autres, par la création d’architectures nouvelles de machines et de réseaux, qui imposent de nouvelles méthodes de programmation. Que l’on pense seulement à l’exemple récent de l’infonuagique...

 De nouvelles familles de problèmes nécessitent des efforts de programmation novateurs, citons seulement l’Internet of Things (IoT).

 Le monde réel change et pose de nouveaux problèmes non encore programmés, comme les révolutions du monde biomédical ou le changement climatique...

 Les modèles issus de la « programmation profonde » (DP) sont d’une taille peu soutenable, l’auteur cite un modèle à 137 milliards de paramètres. Certaines applications ne justifient pas les investissements colossaux induits par de telles solutions, et relèveront toujours (ou du moins longtemps) de méthodes différentes.

Daniel Yellin énonce également des objections d’une autre nature, plus intrinsèques à l’activité de programmation :

 L’hypothèse implicite qui justifie l’idée de la fin de la programmation est qu’il serait plus facile de spécifier un programme en langage « naturel » que de l’écrire au moyen d’un langage de programmation. Edsger Dijkstra a réfuté cet argument : le langage humain est trop imprécis et trop ambigu pour spécifier un programme de quelque complexité. De façon contre-intuitive, spécifier un programme pour un calcul de physique est plus simple que pour une application de gestion du personnel, parce que la programmation pour la physique peut s’appuyer sur un corpus robuste et contraignant : les lois de la physique, alors qu’il n’existe rien d’équivalent pour la gestion du personnel, laissée aux appréciations plus ou moins subjectives d’humains faillibles.

 Les erreurs de programmation sont souvent idiotes, mais néanmoins très difficile à détecter : un caractère modifié dans un texte de milliers de lignes peut tout corrompre, et corrompre est plus grave que détruire.

 La programmation est une activité sociale : les développeurs discutent entre eux à la cantine et à la machine à café, et c’est souvent leur activité la plus fructueuse.

 Si la « programmation profonde » (DP) remplace de plus en plus la programmation traditionnelle, plus ou moins artisanale, cela signifie que de plus en plus de programmes seront des copies de programmes antérieurs, la créativité s’assèchera, le « capital génétique » de la population des programmes s’appauvrira, et il deviendra de plus en plus difficile de découvrir de nouveaux algorithmes, de nouvelles méthodes de programmation.

Daniel Yellin ne dénie pas tout intérêt à la programmation profonde : il indique simplement que la programmation par les programmeurs peut et doit subsister, que la programmation profonde peut lui apporter du renfort, que certains domaines y sont sans doute plus propices que d’autres, et que finalement cette collection de méthodes nouvelles ne fait que s’ajouter à l’arsenal déjà bien garni du développement informatique.