Annoncer la "fin du code" est un moyen infaillible de passer pour un crétin
« Les développeurs vont disparaître », « les IA génératives vont remplacer les informaticiens », bla bla bla. On revient sur cette douce folie qui hante l’informatique depuis … toujours.
On repart des bases
Vos data scientists préférés prennent la plume et expliquent les choses calmement et sans jargon. Il faut bien que quelqu'un s'y colle.
Pour attaquer ce thème récurrent, je ne résiste pas à partager avec vous cette citation qui pose le problème de la programmation. Rappel : la programmation, c'est l’écriture du texte qui décrit le fonctionnement du programme. Le code informatique est un texte.
La citation est un peu longue.
L'objectif [du projet] était de réduire dans une large mesure la tâche de préparation des problèmes scientifiques pour les ordinateurs. S'il avait été possible que [l'ordinateur] modélise les problèmes seul et qu'il produise des programmes aussi bons que ceux produits par les humains, mais sans les erreurs, alors il était clair que les bénéfices auraient été considérables.
En effet, on estime que deux tiers du coût de la résolution de la plupart des problèmes scientifiques et techniques sur les ordinateurs centraux sont liés à la préparation des problèmes. En outre, plus de 90 % du temps écoulé pour un problème est généralement consacré à la planification, à l'écriture et à la recherche des bugs. Dans de nombreux cas, l'élaboration d'un plan général de résolution n'était qu'une tâche mineure par rapport à celle consistant à concevoir et à coder les procédures de la machine pour exécuter le plan.
L'objectif du projet était de permettre au programmeur de spécifier une procédure en utilisant un langage concis, puis d'obtenir automatiquement à partir de cette spécification un programme efficace. On s'attendait à ce qu'un tel système réduise la tâche de développement et de recherche des bugs à moins d'un cinquième de ce qu'elle était auparavant.
Relisez ces quelques lignes tranquillement. De quoi parle l'auteur ? Prenez votre temps, personne ne vous presse ici. On en reparlera à la fin du billet.
Revenons au sujet de ce billet qui dénonce grave.
C'est quoi la fin du code ?
C'est la fin de la programmation informatique, qui est vue comme fastidieuse et chronophage. C'est la fin du code informatique écrit par des humains. Les humains sont nuls d’ailleurs, à écrire du code source, comme l’assène Matt Welsh, qui s’y connait un peu en informatique. Imaginez une humanité libérée de cette tâche laborieuse … les gains de productivité s’annoncent fantastiques.
Critically, the goal of computer science has always been that programs are implemented, maintained, and understood by humans. But – spoiler alert! — humans suck at all of these things. Matt Welsh
Les humains sont nuls
Je reprends les mots de Brian Hayes dans ce billet : AI and the end of programming. Les ordinateurs sont méthodiques. Ils fonctionnent avec des règles strictes. Ils sont pointilleux et rigoureux. Des caractéristiques que nous associons volontieurs, à tort ou à raison, à un programmeur idéal. Les machines semblent donc mieux adaptées à la programmation que la plupart des personnes. La vague d’intérêt pour les nouveaux outils de génération de texte a relancé ces attentes de disparition des développeurs humains.
Programmeur sonne mal. On dit développeur informatique d'habitude, ou dev quand on bosse dans la tech. Vous noterez en passant que c'est un truc bien anglais, et totalement non-français, de s'exprimer avec des mots d'une syllabe.
Les machines sont meilleures
Les outils dits no-code essayaient bien de faire croire qu’il était possible de s’affranchir du pensum de l’écriture de programmes. En nous faisant manipuler des blocs et des flux. Ça marche dans certains cas. Pas tout le temps.
L’irruption fracassante de ChatGPT
(OpenAI) et ses clones (Llama
, etc.) relance la machine. Ces outils exploitent les capacités de d’apprentissage statistique de grands réseaux de neurones. Couplés à une interface de conversation humaine, ces systèmes d’intelligence artificielle produisent des textes convaincants et formulés élégamment, qu'ils soient vrais ou non. La crédibilité avant tout !
On ne parle pas à un ordinateur comme on parle à un humain
Être crédible et s’exprimer avec aisance ne suffit pas lorsqu’on interagit avec un ordinateur. Et pourtant, ça fonctionne avec les humains. Pourquoi ? Je paraphrase encore Brian Hayes, dont j’ai aimé le (long) papier.
Tout d'abord, les humains se laissent facilement tromper. Nous faisons des concessions, comblons les vides et corrigeons silencieusement les erreurs d’expression. Nous sommes capables de compléter les éléments de contexte manquant, et c’est une différence fondamentale avec les puces en silicium. En général, l’humain moyen aura tendance à fournir de grands efforts pour donner un sens à une déclaration … même lorsque cela n'en a pas. Les menteurs le savent bien.
Ça ne marche pas avec les ordinateurs. Ce sont des juges sévères et impitoyables, sans aucune tolérance pour les mensonges et le non sens.
Un lecteur humain s’efforcera de trouver un sens à une déclaration, malgré les fautes de frappe et d’autres petites erreurs [...] un ordinateur rejettera le programme à la moindre virgule mal placée ou pour une parenthèse manquante. Brian Hayes (traduction libre)
C'est le noeud du problème. Les devs savent très bien qu'un ordinateur est très précis, très rapide et très con : il faut laisser le moins de zones d'ombre possibles dans la conception du programme. Le dev parfait n'en laissera aucune, et précisera au mieux les implémentation qui s'appuient sur des comportements non spécifiés UB du langage. Ah. Ca existe ca, des comportements non spécifiés ? Oui. La théorie de la "fin du code" vient de prendre un sacré coup sur le museau.
ChatGPT m'a tuer
Les IA génératives marquent-elles la fin de la programmation par des humains ?
Cette déclaration est trop péremptoire pour être crédible. On pourrait s’interroger sur les motivations des personnes qui le clament haut et fort. Ont-ils un service à vendre, ou une technologie - au hasard, des IA génératives ou les briques logicielles qui les font fonctionner, comme les LLM ? Ont-ils envie de prendre une revanche sur d’éventuels binoclards boutonneux forts en maths et forts en code, qui leur ont volé la vedette ? Sont-ils des crétins ?
Il faut toujours préférer l'hypothèse de la connerie à celle du complot. La connerie est courante. Le complot exige un esprit rare. Michel Rocard
Les IA génératives produisent du code, certes, mais est-il utile ? Parfois, selon quelques études : Chen et al 2021, Cassano et al 2022, Buscemi et al 2023. Il faut lire. C'est long. J'avoue que je n’y trouve pas un intérêt fou. D'ailleurs, ce sujet m'ennuie en général davantage qu'il ne me passionne. Les data scientists avec qui je travaille préfèrent réfléchir seul, puis farfouiller sur Stack Overflow quand ils sèchent. On y trouve généralement des réponses semi-valables, et on a la chance de pouvoir comprendre ce qui ne fonctionne pas. Chaque problème est une occasion d’apprendre.
Doit-on suspecter une énième manifestation de la psychose collective qui se manifeste lors de l'apparition d'une nouvelle technologie ? Il serait imprudent d’évacuer totalement cette hypothèse. Hypothèse basée sur la peur fantasmée de se faire remplacer par des ordinateurs, forme de grand remplacement technologique, à la fois inévitable et inéluctable. Les IA génératives ne remplaceront pas les développeurs de sitôt. Pour le tout-venant et le générique, peut-être. Pour le spécifique et le précis, je ne crains pas grand chose. Ce sont des outils, et comme tous les outils, ils peuvent être utiles, ou ne pas l’être.
Fortran, 1957
La longue citation en début de billet pourrait présenter un projet d'outil no code actuel. Les estimations sont cohérentes.
Loupé.
Elle est issue du papier de J.W. Backus The FORTRAN Automatic Coding System
(pdf),
qui présente le langage Fortran
, en 1957. Fortran
était conçu pour accélérer
l'écriture des programmes. A cette époque, les programmes étaient habituellement
écrits en assembleur pour des cibles précises, avec un code non portable. Ce
langage de programmation n'est aujourd'hui plus vraiment utilisé, sauf quand on
a pas le choix.
Quand on vous disait que ces questions dataient.