- Programmer est un acte créatif qui consiste à affiner progressivement des spécifications ambiguës avec précision, et l’IA accélère ce processus en transformant des spécifications en anglais en code
- Le « vibe coding » permet une approche plus intuitive du développement, mais il ne peut pas éviter les problèmes de complexité et de bugs dus aux fuites d’abstraction
- Les humains utilisent l’abstraction et la compression pour gérer la complexité, et c’est là une valeur essentielle de la programmation
- À l’ère de l’AGI, l’IA devrait aider à créer de meilleures abstractions et permettre la création de code plus sophistiqué et plus artistique
- Contrairement à l’idée selon laquelle « le code est mort », l’IA est présentée non comme la fin du codage, mais comme un outil ouvrant un nouveau départ
La mort du code est une affirmation exagérée
- En soulignant l’ambiguïté des spécifications en anglais et les limites de leur précision, l’article explique que programmer consiste, comme écrire, à augmenter la précision par itérations successives
- Une citation de Bertrand Russell souligne que « tout est vague tant qu’on n’a pas essayé de le rendre précis »
- L’IA transforme rapidement des spécifications rédigées en anglais en code exécutable, ce qui permet à l’utilisateur de préciser progressivement le résultat souhaité
- Le « vibe coding » est une manière de développer en réagissant intuitivement aux résultats générés par l’IA, mais cela peut donner l’illusion d’une abstraction exacte
- Lorsque l’abstraction fuit, des bugs inattendus apparaissent, et le problème s’aggrave à mesure que l’échelle augmente
- Comme dans le cas présenté par Dan Shipper, un éditeur de texte collaboratif créé en « vibe coding » a gagné en popularité avant de tomber à cause de problèmes de complexité
- La « collaboration en direct » paraît intuitivement simple, mais c’est en réalité un problème très difficile, ce qui montre la nature même de la complexité
Abstraction et maîtrise de la complexité
- L’être humain ne peut appréhender qu’environ 7±2 éléments à la fois, donc la seule manière de gérer la complexité est la « compression », c’est-à-dire l’abstraction
- Une citation d’Edsger Dijkstra souligne que « le but de l’abstraction n’est pas l’imprécision, mais la précision à un nouveau niveau de sens »
- L’exemple de Sophie Alpert simplifiant un diagramme complexe de flux de notifications de Slack est cité
- Le cœur de la programmation est la création de meilleures abstractions pour traiter la complexité, et l’on peut en trouver la beauté dans des approches comme la programmation réactive fonctionnelle
- Même des problèmes intrinsèquement complexes, comme les éditeurs de texte collaboratifs, peuvent être progressivement maîtrisés grâce à des outils d’abstraction comme ReactJS ou TailwindCSS
L’ère de l’AGI et le rôle du code
- À mesure que l’IA progresse et devient plus rapide et moins coûteuse, elle finira par atteindre une intelligence indiscernable de celle des humains (AGI)
- À l’ère de l’AGI, chacun pourra disposer à faible coût d’une intelligence aussi puissante que « 100 génies du niveau de Karpathy »
- Mais cela ne servira pas à produire « davantage de mauvais code » ; ce sera plutôt un outil pour de meilleures abstractions et une meilleure compréhension de la complexité
- Le code n’est pas seulement un moyen de créer des logiciels, c’est aussi un produit artistique important en soi, et un code bien écrit est comparé à de la poésie
- De même qu’il n’existe pas de « vibe writing » en écriture, le codage ne peut pas non plus être remplacé par un simple geste intuitif
- Quand l’AGI arrivera, les machines pourront écrire du code non-slop, ce qui constituera un progrès glorieux pour l’humanité
IA et amélioration de la qualité du code
- Aujourd’hui encore, l’IA produit du code imparfait, mais les développeurs l’utilisent en tenant compte de cette limite
- Comme le souligne Simon Willison, l’IA doit être utilisée comme un outil pour produire un meilleur code
- Lorsque l’AGI apparaîtra, elle sera d’abord mobilisée pour résoudre les problèmes d’abstraction les plus difficiles, afin d’améliorer des systèmes complexes comme les bibliothèques d’éditeurs collaboratifs
- Un exemple est donné avec le développement, à l’aide d’Opus 4.6, du framework React full stack (vtrr) pour Val Town
- Des problèmes non résolus liés à React Router 7 ont été réglés d’un seul coup, avec une démo en fichier unique de 50 lignes qui traite la complexité avec élégance
- Cela montre qu’il est possible de créer un code sophistiqué grâce à une collaboration entre l’IA et l’humain
L’avenir du code et la valeur du formalisme
- Une grande partie de la société croit que « le code est mort », mais c’est la même erreur que de déclarer la fin des histoires à cause de l’invention de l’imprimerie
- L’IA ne signifie pas la fin du codage, mais un nouveau commencement pour le codage
- Des citations d’Edsger Dijkstra, Tony Hoare et Charles Babbage soulignent que la pensée formelle et la puissance de compression des symboles étendent les capacités de la pensée humaine
- Dijkstra explique que l’usage des langages formels doit être vu non comme une contrainte, mais comme un privilège
- Hoare oppose deux approches : « une conception simple manifestement exempte de défauts » et « une conception complexe dont les défauts ne sont pas manifestes »
- Babbage souligne que la compression des symboles est une force qui stimule la pensée
- En conclusion, le code n’est pas mort ; au contraire, il s’impose comme un outil créatif encore plus puissant à l’ère de l’IA
Aucun commentaire pour le moment.