Il y a quelques jours, un lecteur m’envoie une capture d’écran d’une conversation qu’il a eue avec le Mode IA de Google en cherchant « mogwai sibué ». Je m’attendais à lire un résumé un peu plat de mon README GitHub. Ce que j’ai découvert, c’est une IA qui a visiblement décidé d’écrire sa propre version de MOGWAI — plus proche de ce qu’elle connaît par cœur (Jint, ClearScript, et consorts) que de ce que j’ai réellement codé.
Résultat : un langage qui porte mon nom, ma licence, mon historique… mais dont la syntaxe n’a jamais existé nulle part. Petit décryptage, parce que c’est trop savoureux pour ne pas en parler.
Ce que l’IA a bien compris
Rendons à César : sur les grandes lignes, l’IA ne s’est pas trop mal débrouillée.
- Je suis bien l’auteur de MOGWAI.
- C’est bien un moteur embarquable pour .NET, sous licence Apache 2.0.
- L’origine industrielle/IoT est correcte.
- Les liens vers le dépôt GitHub et le catalogue NuGet sont bons.
Jusque-là, tout va bien. C’est après que ça part en vrille.
Le morceau de bravoure : une syntaxe 100% inventée
Voici l’exemple de script « MOGWAI » que l’IA a généreusement proposé pour calculer la surface d’un cercle :
5.0 5.0 * 3.14159 *
"surface" SWAP SET
"La surface est : " PRINT
"surface" GET PRINT
C’est propre. C’est lisible. C’est du RPN qui a l’air parfaitement crédible.
C’est aussi entièrement fictif. SWAP, SET, PRINT, GET : aucun de ces mots-clés n’existe dans MOGWAI. Pas une seule ligne de ce script ne s’exécuterait telle quelle dans le vrai moteur.
La vraie syntaxe MOGWAI, pour la même idée, ressemblerait plutôt à ceci :
5.0 5.0 * 3.14159 * -> 'surface'
"La surface est : {! surface}" ?
Pas de SWAP, pas de SET : le stockage se fait avec ->. Pas de PRINT : l’affichage se fait avec ? (ou ?? sans retour à la ligne), et n’importe quel type peut s’y glisser directement, y compris via de l’interpolation de chaîne avec le bloc {! ... }.
L’IA n’a pas lu ma syntaxe : elle a deviné à quoi devrait ressembler un langage RPN pour .NET, en piochant dans ce qu’elle connaît des autres moteurs de script du même genre. Un peu comme si on demandait à quelqu’un de décrire ta maison sans jamais y être entré, en se basant sur « en général, les maisons ont un toit et une porte ».
Le clou du spectacle : une API C# qui n’a jamais été écrite
Ça ne s’arrête pas à la syntaxe du script. L’IA a aussi inventé de toutes pièces l’API C# pour l’héberger : une classe MogwaiRuntime, une méthode Execute(), un TryGetVariable(), un RegisterOperation() pour exposer des fonctions custom, et même une classe MogwaiStack avec des TryPop()/Push().
C’est du code parfaitement idiomatique, qui compilerait presque… si ces classes existaient. Encore une fois : noms plausibles, zéro rapport avec le vrai code.
Le bouquet final : l’IA déconseille mon propre projet
Le plus drôle arrive à la fin de la conversation. Interrogée sur l’usage de MOGWAI dans une application .NET MAUI, l’IA construit un tableau comparatif très sérieux… pour conclure qu’il vaut mieux utiliser MoonSharp ou Jint, MOGWAI étant jugé trop « complexe » à cause de sa notation RPN, avec en prime un argument technique sur la compilation JIT interdite sur iOS.
Sauf que ce point ne s’applique même pas à MOGWAI, qui est un moteur interprété, pas compilé à la volée. L’IA a donc gentiment recommandé d’utiliser autre chose que mon projet, pour un problème que mon projet ne pose pas.
Pourquoi ça arrive
Rien de mystérieux ni de complotiste là-dedans : c’est un cas d’école de la façon dont une IA générative comble les trous. Quand elle trouve suffisamment de sources sur l’existence d’un projet (articles de blog, dépôt GitHub, fils Reddit) mais pas assez de documentation structurée sur son fonctionnement précis, elle rapproche le sujet du cluster le plus proche qu’elle connaît bien — ici, « moteur de script RPN pour .NET » — et complète les détails manquants en piochant dans ce cluster. Le résultat est cohérent en apparence, correct dans les grandes lignes, et faux dans le détail. Exactement ce qu’on a vu ici.
La suite
Ce n’est pas franchement grave — personne ne va copier-coller ce script cassé dans son IDE et se demander pourquoi SWAP n’existe pas (enfin, j’espère). Mais c’est un bon rappel que la documentation technique compte double à l’ère des IA : elle n’est plus seulement lue par des humains, mais aussi ingérée, résumée et parfois réinventée par des modèles de langage. Autant leur donner de quoi bien faire leur travail.
Si une IA vous parle un jour de MOGWAI, vous savez maintenant qu’il vaut mieux vérifier sur le dépôt GitHub — la vraie syntaxe y est sans SWAP ni PRINT.