Je repense souvent à cette vidéo qui a fait un petit buzz il y a déjà pas mal d'années. Je ne sais plus comment j'étais tombé dessus, mais je me souviens que la personne qui l'avait partagé avait commenté avec, de mémoire, "Programmer, c'est exactement ça".
L'article qui suit se base pas mal sur cette vidéo, donc je conseille de la visionner avant de poursuivre.1 Ne serait-ce que parce qu'elle est rigolote. Oui, c'est en anglais, mais aucun besoin de piger quoi que ce soit à la langue de Shakespeare pour réussir à suivre.
Si vraiment tu ne veux pas prendre le temps d'y jeter un oeil, alors en gros, un père a demandé à ses deux enfants de lui fournir une liste d'instructions à suivre pour confectionner un sandwich beurre de cahouètes/confiture, instructions qu'il s'amuse à interpréter le plus littéralement possible pour tout faire de travers et énerver les mômes. Plus qu'à lancer la boite à rires.
Et effectivement, si tu as un jour eu l'occasion de taper quelques lignes de code, ça doit te rappeler des souvenirs.
Alors oui. Une liste d'instructions, c'est la définition d'un programme, et donc c'est techniquement ce que font les deux gamins. Qu'ils codent en anglais plutôt qu'en brainfuck n'y change pas grand-chose.2
Mais selon cette définition, un cuistot qui suit une recette programme aussi, même si tout se passe très bien pour lui. Si la scène à réveillé autant de traumatismes chez les codeurs qui l'ont vu, c'est surtout parce que le papa qui joue au con arrive à être presqu'aussi teubé qu'un véritable ordinateur.
Parce que oui. Le marketing aura beau caser le mot "smart" partout où il le pourra, un ordinateur, c'est fondamentalement idiot, et les machines d'aujourd'hui ne le sont pas moins que leurs ancètres. Plus puissantes, oui. Capables de réaliser plus de calculs, plus rapidement, et donc des tâches de plus en plus complexes. Mais plus malignes, certainement pas.3
Programmer, c'est donc s'arracher les cheveux pour amener un processeur qui ne serait même pas foutu de mettre un pied devant l'autre sans trébucher à faire ce qu'on lui demande. Et ça, parfois, ça demande effectivement des trésors d'inventivité. Mais si quelque chose ressemble à de l'intelligence la dedans, c'est au niveau du software (c'est-à-dire des logiciels) qu'elle se trouve. Pas dans le hardware (le matériel).
Abstraction, piège à cons
J'avais montré la vidéo à des amis quand j'étais tombé dessus, en leur disant que c'était à ça que ressemblait mon quotidien (à l'époque, j'étais développeur web). L'un d'entre eux m'avait répondu que, oui, bon, ok, mais avec les outils d'aujourd'hui,4 c'est quand même vachement moins galère, non ?
Et dans un sens, il n'avait pas tort. Ça fait un bout qu'on ne communique plus directement avec le processeur. Au lieu de ça, on réutilise des fonctionnalités fournies par tout un tas de couches logicielles qu'on a empilé les unes sur les autres et qui servent d'intermédiaire entre notre code et la machine.5
Ces couches censées nous simplifier la vie, on les appelle des abstractions, et ce sont elles qui nous permettent de ne pas avoir à réinventer la roue à chaque nouveau projet. On les considère généralement comme des boites noires, et on se soucie rarement de comprendre comment elles fonctionnent.
Pour revenir à notre sandwich, c'est un peu comme si le voisin était un spécialiste de l'ouverture de bocaux. Nos deux gamins pourraient alors aller le chercher, et lui demander de s'occuper de tout ce qui concerne le beurre de cacahouètes. Celui-ci prendrait alors le relais pour expliquer au papa idiot comment ouvrir le pot. Et s'il fait bien son boulot, alors il saura détailler le processus avec suffisamment de précision pour que l'autre ne puisse pas se tromper.
On peut alors imaginer une cousine qui débarque pour s'occuper du pain, et un grand frère qui se chargerait de la confiture. Les protagonistes n'auraient alors plus qu'a donner leurs instructions et laisseraient les autres gérer les détails.
Et parfois, c'est comme ça que ça se passe. Mais d'autres fois, on se rend compte que la cousine ne sait manipuler que des baguettes et n'a aucune idée de quoi faire avec un paquet de pain de mie. Ou que le grand frère et le voisin ne peuvent pas se saquer et refusent de bosser ensemble.
Ça parait idiot, mais tu n'as pas idée du nombre d'heures qu'on peut perdre à gérer ce genre de problèmes.6 Et même si tout le monde est ok pour bosser ensemble, on n'est jamais à l'abri d'un malentendu, et il faut encore expliquer à papa de quel côté tenir le couteau.
Ce qui est certain, c'est que même quand tout se passe bien, ces abstractions ne sont pas magiques, et au mieux, ne font que masquer ce que fait réellement la machine. Et quand quelque chose ne se déroule pas comme prévu et qu'il faut ouvrir le capot pour essayer de piger ce qui cloche, on se souvient très vite que la machine est toujours aussi bête.
Gaffe où tu mets ta phore

Une interface graphique, ça repose aussi sur des abstractions, qu'on appelle aussi parfois des métaphores. Celle du bureau est probablement la plus connue. Et une métaphore, ça peut être très joli et pratique, mais fondamentalement, ça reste un mensonge.
L'ordinateur n'a aucune idée de ce qu'est un fichier. Pour lui, ce n'est qu'une suite de 1 et de 0 qu'un programme lui a dit d'aller récupérer à un endroit ou à un autre. Le disque dur ? Le réseau ? Peu importe. Sans le pilote approprié, la machine ne saura rien en faire.
Toutes ces abstractions ont permis de démocratiser l'accès à l'informatique en permettant à des gens "normaux" d'utiliser leurs machines. Mais comme avec les librairies, passé un certain point, on finit par ne plus vraiment savoir ce que notre système est en train de faire. Au point que pas mal d'utilisateurs ne savent plus non plus ce qu'est un fichier.
La tendance, depuis déjà pas mal d'années, est à l'épuration. On réduit au maximum le nombre de concepts à maîtriser au profit d'un gros bouton qui sert à tout. Les interfaces qui résultent de ce processus sont extrêmement faciles à utiliser, mais elles ne te laisseront rien faire qui n'aie pas été explicitement prévu par le développeur.
Sous prêtexte de pouvoir faire toujours plus de trucs en ayant de moins en moins besoin de réfléchir à ce que l'on fait, notre dépendance aux vendeurs de vent s'accentue de jour en jour, au point de ne plus être foutu d'envoyer un simple email si Apple ou Microsoft n'ont pas daigné inclure la fonctionnalité permettant de le faire en un clic dans leur application.
Et c'est comme ça que l'empowerment7 promis devient de l'asservissement.
On n'a pas attendu l'IA pour nous vendre l'informatique comme un outil magique qui ne nécessite aucun apprentissage. Sauf qu'encore une fois, la magie, ça n'existe pas. Et quand la machine déconne, on se retrouve comme des cons.
Et elle déconne, la machine. Souvent. Tant qu'il s'agit de préparer le goûter, ce n'est pas si grave. Mais quand les conséquences deviennent plus sérieuses, il est temps de se poser des questions.
Des Idiots Artificiels au pouvoir bien réel

Si on part du principe qu'un ordinateur est un outil ou un simple exécutant, alors sa profonde crétinerie n'est pas un problème. Au contraire, c'est tout ce qu'on lui demande.
Quand j'utilise un marteau, je ne m'attends pas à ce qu'il prenne la moindre initiative, et je ne veux surtout pas qu'il décide à ma place de ce qu'on va construire.
Si l'objet est difficile à utiliser, alors on peut réfléchir à améliorer son ergonomie. Mais ne confondons pas ce gain d'accessibilité avec une quelconque forme d'intelligence.
La machine est, et doit rester, un esclave au service de son maître.8 Quand celle-ci prend le contrôle de la situation, la question qu'il faut se poser, ce n'est pas si les robots sont devenus autonomes, mais plutôt à qui ils obéissent. Et si tu t'y refuses, alors un jour, l'esclave, ce sera toi.
Ça fait déjà un moment qu'on confie la gestion de nos vies à l'informatique, sous prêtexte d'efficacité et de simplification. Je ne parle pas ici d'automatiser certaines tâches rébarbatives, mais de décider de qui pourra bénéficier du RSA. Et on demande de plus en plus aux agents bien humains de simplement faire confiance à la machine, en plus de leur retirer petit à petit la possibilité d'ignorer celle-ci. C'est ce que Benjamin Bayart résume par "L'ordinateur est fatal".9
C'est pour ça qu'il me semble crucial de toujours garder l'image de ce papa qui joue au débile pour amuser ses mômes dans un coin de la tête, et d'y repenser à chaque fois qu'on évoque l'idée de déléguer une tâche de plus à un ordinateur.
Si on estime que la tâche en question à une quelconque importance, alors commençons par nous demander si on veut vraiment la confier à une machine qui n'est même pas foutue de préparer un sandwich.
Bon appétit.
-
Je me suis permis de la réuploader sur Peertube, histoire que google ne vienne pas fourrer ses sales trackers sur cette page.
Au cas où l'instance aurait des problèmes, L'originale est ici. ↩
-
Quitte à programmer dans un langage naturel, c'est quand même plus mignon, et probablement plus efficace que Copilot. ↩
-
Je ne sais pas si tout le monde devrait apprendre à coder. Mais si tu t'y mets et que tu ne dois en retenir qu'une seule chose, c'est bien à quel point ta bécane est crétine. ↩
-
Cette conversation a eu lieu en 2018 au plus tard. Donc, par "outils d'aujourd'hui", il ne pensait pas aux LLMs actuels qui prétendent résoudre tous nos problèmes. ↩
-
Certaines de ces fonctionnalités sont fournies par le système d'exploitation. D'autre par ce qu'on appelle des bibliothèques, ou des librairies par anglicisme. ↩
-
Le monde du dev tend à se reposer, et donc à dépendre de plus en plus de librairies externes, qu'on installe en deux lignes de commandes en se posant de moins en moins la question des problèmes que celles-ci pourraient poser où même de leur utilité réelle.
Mais passons. Ce n'est pas le sujet de ce billet. ↩
-
Je veux bien faire un effort pour éviter les anglicismes, mais "enpouvoirement", désolé, c'est vraiment trop moche. ↩
-
Le jour où les robots auront développé une conscience, alors on pourra en rediscuter.
Mais on en est encore loin. ↩
-
La vidéo est longue, mais le passage pertinent ne dure que 3 minutes.
N'hésite pas à tout laisser filer si le sujet t'intéresse. Bayart qui cause, c'est toujours chouette. ↩