Votre panier est actuellement vide !
Vibe coding

The Feeling of Dreams, Ariel Whitmore, 2022, CC-BY-SA 4.0
J’ai beaucoup parlé ici de l’usage d’intelligence artificielle pour générer du texte ou de l’image, mais l’écriture de code informatique n’est pas épargnée, et tout aussi emblématique du phénomène. Comme pour les métiers qu’on étiquette « artistiques », il semble en réalité que cette nouvelle tendance concerne surtout une frange plutôt amatrice, ou en tout cas peu au fait des standards et des méthodes habituelles liées au développement de programmes informatiques ; les conséquences sont toutefois bien concrètes.
Les anglophones appellent cette manière de développer le « vibe coding », une expression difficile à traduire en français, mais qu’on pourrait rapprocher de « coder dans la vague », avec une notion de se laisser porter en faisant simple, sans avoir à fournir de gros efforts intellectuels pour résoudre des problèmes. C’est assez symptomatique de la démarche. Autrement dit, et plus prosaïquement, l’idée est d’expliquer à une I.A. générative le but du programme et de la laisser faire le code, en procédant par essai-erreur. Le « codeur » abandonne donc toutes les étapes, les connaissances et les contrôles habituels nécessaires à un tel développement : sécurité informatique, performance, optimisation, relecture du code, corrections de bugs…
Le code que génère l’I.A. peut donc éventuellement être fonctionnel, à force d’essais et d’erreurs, mais, ayant abandonné toute itération progressive, il est impossible de revenir sur les raisonnements, les choix de conception, les corrections et améliorations progressives qui auraient permis d’aboutir au code « final », comme dans le cadre d’un développement classique. Le code obtenu est bel et bien final, car cette absence d’historique le rend presque impossible à reprendre, en particulier si on continue à « vibe coder » : l’I.A. est tout simplement incapable de résoudre des problèmes de code1, et elle est notoirement mauvaise dans le travail incrémental, quasiment incapable d’effectuer de petites modifications progressives sur ce qu’elle génère sans apporter des modifications dans d’autres parties non voulues. Si lors de la retouche d’une image une modification mineure non voulue peut être acceptable, dans un code informatique toute modification non voulue peut être fatale, aussi « mineure » soit-elle. Il faudrait alors pour que le code généré à chaque incrémentation soit intégralement relu et contrôlé, ce qui tue dans l’œuf l’intérêt même d’utiliser une I.A. générative pour la conception de tout programme un minimum complexe.
Et en réalité, le code finalement obtenu n’est fonctionnel qu’en apparence. Tout porte à croire que le langage informatique est typiquement un domaine dans lequel les intelligences artificielles génératives ne peuvent pas être réellement performantes : contrairement au langage naturel, le code ne peut pas fonctionner sur un modèle statistique ; l’absence de synonymes, d’ambiguïté, la nécessaire précision fait qu’un code ne peut pas dévier, que la moindre erreur produit des bugs ou des échecs. Comme lorsqu’il est généré par des humains, le code généré par I.A. comporte inévitablement des bugs et des erreurs, auxquelles il faudra se confronter à un moment ou à un autre ; comme pour tout code, la maintenance est nécessaire. Mais tous les développeurs le savent : maintenir un code que l’on n’a pas écrit demande une quantité de travail bien supérieure2. Ce n’est d’ailleurs pas si différent que de demander à quelqu’un d’apporter des modifications sur un texte ou une image complexe dont il n’est pas l’auteur ou l’autrice.
Ce ne sont pas là que des spéculations, et la réalité est même pire ; il semble bien que l’usage de l’I.A. pour générer du code amène à une production moins sûre, mais avec plus de confiance, ce qui est la pire des situations. Selon une étude d’une équipe de Stanford University3, des codeurs ayant accès à un assistant I.A. ont produit du code moins sûr tout en croyant leur code plus sûr que celui écrit par les codeurs sans accès à l’assistant artificiel. À contrario, les codeurs faisant le moins confiance à l’I.A. produisaient un meilleur code, passant plus de temps à formuler correctement leurs demandes et à relire le code. Le problème n’est pas anodin ; les I.A. génératives sont entraînées sur une somme immense de codes informatiques, qu’il serait absolument impossible de relire et trier à priori pour s’assurer de ne leur fournir que du code fonctionnel et sûr. Il en résulte que ces I.A. génèrent très facilement du code avec de graves erreurs et omissions de sécurité4, que seuls des développeurs avertis sont capables de repérer. Mais est-ce-que ce sont ces développeurs avertis qui « vibe codent » ?
D’une certaine manière, les erreurs introduites par des codeurs humains dans les programmes informatiques sont prédictibles : les oublis ou les ignorances d’un codeur manquant d’expérience, par exemple, ne varient pas d’un code à l’autre et restent semblables d’un individu à l’autre, ce qui facilite la relecture et la correction du code, le contrôle de sa qualité et de sa sécurité. Les erreurs et hallucinations des intelligences artificielles sont elles bien plus imprévisibles5 et aléatoires, inattendues, ne répondant à aucune logique et restent incompréhensibles pour les humains, qui auront le plus grand mal à les anticiper, les repérer et donc les corriger, ne sachant où chercher. Une erreur qui empêcherait un programme de fonctionner correctement sera toujours repérée instantanément, mais qu’en est-il des erreurs de sécurité, par exemple qui rend caduc un système d’encryptage des données ? Une telle erreur ne se voit pas nécessairement à l’usage du programme ; si, par ailleurs, nous sommes incapables d’anticiper ces erreurs, en ne sachant pas prédire dans quelles parties du programme l’I.A. aurait pu en introduire de manière complètement aléatoire, alors aucun programme développé avec l’aide d’une I.A. ne peut être considéré comme sûr. Mais qui contrôle si c’est le cas dans le programme embarqué de votre voiture ou de l’avion que vous prenez, dans votre application bancaire, dans les systèmes de paiements numériques, dans les fichiers policiers… Et nous ne parlons là que des cas les plus graves, mais n’oublions pas que le numérique prend une place toujours plus importante dans nos vies, et que les bugs informatiques ont donc toujours des conséquences bien concrètes.
Cet exemple dans le domaine de la programmation informatique nous montre encore une fois comment l’usage d’automatisme satisfaisant notre fainéantise naturelle nous pousse logiquement à une réduction de la qualité de notre travail, plutôt qu’à mettre à profit le temps ainsi économisé pour au contraire progresser et améliorer.
- Ce sont des chercheurs d’OpenAI qui l’admettent dans une étude en prébublication, portant sur l’impact économique de l’I.A. dans le monde du code : SWE-Lancer: Can Frontier LLMs Earn $1 Million from Real-World Freelance Software Engineering?,
arXiv:2502.12115
↩︎ - The 4 biggest challenges of AI-generated code that Gartner left out of its latest report, David Gewirtz pour le média en ligne ZDNet. ↩︎
- Do Users Write More Insecure Code with AI Assistants?,
arXiv:2211.03622
↩︎ - A Critical Look at AI-Generated Software ; Coding with ChatGPT, GitHub Copilot, and other AI tools is both irresistible and dangerous, IEEE Spectrum. ↩︎
- AI Mistakes Are Very Different From Human Mistakes, IEEE Spectrum. ↩︎
Soutenez-nous
Vos dons sont la seule source de revenus permettant à ce contenu d’exister, en complète indépendance, sans pub, sans sponsoring. Merci !
Laisser un commentaire