Ton IA écrit du code qui compile mais ne signifie rien (et un linter peut la piéger)

Imagine que tu demandes à quelqu’un de te construire une étagère. Il te la donne. Elle est belle. Elle a des étagères, des vis, tout est à sa place. Tu la poses contre le mur et elle s’effondre. Les vis sont des accessoires. Elles ressemblent à des vis, mais sont en plastique. C’est ce qu’un LLM fait lorsqu’il abuse du système de types. Il te livre du code qui compile, qui passe les tests, qui a la forme correcte. Mais en interne, là où il devrait y avoir des types significatifs, il y a des chaînes de caractères (String). Là où il devrait y avoir un état explicite, il y a un nil qui signifie trois choses différentes selon la personne qui le lit. Et là où il devrait y avoir un énumération (enum) avec deux cas, il y a un == "claude" qu’un jour quelqu’un écrira mal, et personne ne s’en rendra compte avant que cela ne tombe en production. ...

23 mars 2026 · Fernando