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.

« [The project’s] purpose was to reduce by a large factor the task of preparing scientific problems for computers. If it were possible for the [computer] to code problems for itself and produce as good programs as human coders (but without the errors), it was clear that large benefits could be achieved.

For it was known that about two-thirds of the cost of solving most scientific and engineering problems on large computers was that of problem preparation. Furthermore, more than 90% of the elapsed time for a problem was usually devoted to planning, writing, and debugging the program. In many cases the development of a general plan for solving a problem was a small job in comparison to the task of devising and coding machine procedures to carry out the plan.

The goal of the project was to enable the programmer to specify a procedure using a concise language and obtain automatically from this specification an efficient program to carry out the procedure. It was expected that such a system would reduce the coding and debugging task to less than one-fifth of the job it had been. »

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 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. Étonnant, n'est-ce pas ? Fortran, symbole du langage de développement antique et à proscrire, était pensé pour accélérer l'écriture des programmes. A cette époque, les programmes étaient habituellement écrits en assembleur, dans des codes non portables.

Quand on vous disait que ces questions datait de la préhistoire de l’informatique.


Thomas