En 1989, deux personnes écrivaient des programmes qui engendraient du langage à partir de la structure plutôt que du sens. L’une était Tim Berners-Lee, qui fit circuler cette année-là une note intitulée Information Management: A Proposal — le document qui allait devenir le World Wide Web. L’autre était un professeur dans un couloir de Medellín, qui écrivit cent lignes de Turbo Prolog pour se moquer de ses collègues.
Le second, je le connaissais. Le premier, je l’ai appris plus tard, comme tout le monde. Mais les deux étaient plus proches en esprit que ne le laisse croire la distance entre Genève et l’Universidad de Antioquia. Tous deux pariaient que, si l’on réglait bien les relations — entre documents, entre mots —, le contenu se débrouillerait tout seul. Un pari a bâti l’internet moderne. L’autre a fini épinglé sur un tableau de liège, lu par des gens qui n’ont jamais compris que la plaisanterie, c’était eux.
I. Le couloir et le tableau d’affichage
Le professeur Fabián Ríos le construisit sur le premier ordinateur du département de génie des systèmes — un PC NEC, de ceux qui démarraient depuis une disquette et mesuraient leur mémoire en kilo-octets. Turbo Prolog, le produit de Borland sorti en 1986, tournait sous MS-DOS sans modules, sans Unicode, sans aucune des commodités qu’un programmeur d’aujourd’hui tient pour acquises comme il tient l’électricité pour acquise.
Le programme faisait une seule chose. Il démontrait un unique but en enchaînant une dizaine de prédicats, chacun appelant une fonction aléatoire pour choisir parmi une dizaine d’options. Dix colonnes, dix choix chacune, concaténés en un paragraphe de prose digne, à la sonorité institutionnelle. La sortie était signée Nefasto Bocazza — un nom dérivé, avec l’affection d’une insulte, de la machine NEC sur laquelle il tournait.
Venait ensuite le deuxième acte, qui est la partie que j’adore. Le professeur Roberto Flores imprimait les discours et les affichait sur le tableau de la faculté. Et les professeurs les lisaient. Des universitaires affairés s’arrêtaient dans le couloir, parcouraient un paragraphe des proclamations de Nefasto, hochaient la tête et passaient leur chemin. La satire fonctionnait non parce que le texte était astucieux, mais parce que le bâtiment était déjà rempli d’un langage identique — grandiloquent, ornementé, récursif, et ne disant presque rien. Cent lignes de Prolog avaient révélé qu’une bonne part de la parole universitaire n’était, structurellement, que des colonnes tirées au sort.
Je dois être honnête sur mon propre rôle dans cette histoire, qui est surtout celui d’un déserteur. J’ai abandonné Prolog. Il fallait survivre, alors je suis passé à Turbo Pascal et Turbo C et, avec le temps, à quelque chose qu’on appelait SQL. Le code original de Nefasto est perdu. Le professeur Ríos se souvient qu’il était « très simple » et ne se rappelle plus la forme exacte de la fonction aléatoire ni de l’opérateur de concaténation. Cela aussi fait partie de la leçon : la chose était si légère qu’elle n’a presque pas laissé de trace.
II. Ce que pouvait contenir 1989
Il vaut la peine de se rappeler la boîte dans laquelle cela tournait, car la boîte est l’argument. Le NEC était un 8086 ou un 80286, cadencé entre 4 et 12 MHz. Il avait 640 Ko de mémoire conventionnelle — et la barrière des 640 Ko n’était pas une figure de style mais un mur contre lequel on butait en jurant. Le stockage, c’étaient des disquettes, peut-être un disque dur de 20 Mo. L’affichage était monochrome ou CGA quatre couleurs. Pas d’internet, pas de réseau, pas de coprocesseur, aucune notion d’un « nuage » vers lequel déléguer le difficile.
Le logiciel était tout aussi dépouillé. Turbo Prolog n’avait ni findall/3, ni setof/3, ni bibliothèque standard pour les chaînes. Les accents du français — ou de l’espagnol — exigeaient un encodage ASCII ingénieux ou une omission discrète. Le débogueur, c’était trace et spy. Pas de gestion de versions, pas de gestionnaire de paquets, rien à installer. Tu écrivais la grammaire, tu exécutais le but, tu obtenais le discours.
Mettons cela face à un modèle de pointe en 2026 : un entraînement qui consomme des mégawattheures sur des milliers de GPU, des billions de tokens de tout le corpus écrit augmenté de supplément synthétique, une seule passe avant effectuant plus d’arithmétique que le NEC n’en aurait fait dans toute sa vie utile. L’écart de ressources est astronomique. L’écart d’utilité pour la tâche précise — produire un discours institutionnellement plausible afin de railler le discours institutionnel — est à peu près nul. Nefasto le faisait en millisecondes sur 640 Ko. C’est la bonne réponse à la question qu’on lui posait.
III. La logique, non la vraisemblance
La renaissance — j’ai tenté de le faire revivre sur github.com/contento/nefasto — utilise SWI-Prolog et les grammaires de clauses définies pour engendrer des récits en trois actes : un personnage traverse l’exposition, la complication et la résolution, puisant des mots dans des dictionnaires propres à chaque profil. Une grammaire n’est qu’un ensemble de règles de réécriture décrivant quelles phrases sont valides. Le moteur de Prolog trouve une dérivation qui satisfait les règles, et cette dérivation est le texte. Il y a douze profils de discours — politique, universitaire, juridique, complotiste, motivationnel, passif-agressif, et ainsi de suite —, chacun étant un vocabulaire distinct versé dans la même grammaire.
Prenons le profil karen — arrogant, exigeant, obsédé par la réclamation, sa personnalité entière comprimée en une liste de mots. On l’invoque depuis la ligne de commande :
swipl -l src/main.pl -- --lang en --profile karen --seed 42
et il renvoie des récits en trois actes comme ceux-ci :
once Patricia arrived in the restaurant . then Patricia suggested the refund . finally Patricia cautioned .
once Karen arrived in the newspaper . then Karen harmed the investment . finally Karen threatened .
once Brenda arrived in the television . then Brenda escalated the expectation . finally Brenda demanded .
La grammaire est rigide et visible — arrived in, then, finally — et le vocabulaire fait le reste : manager, complaint, unacceptable, refund, lawsuit, demand, threat. Garde --seed 42 et tu obtiens exactement ces phrases, sur n’importe quelle machine, pour toujours ; change-la et tu obtiens un ensemble différent mais tout aussi valide. Remplace --profile karen par --profile legal et les mêmes trois actes ressortent avec la cadence d’un contrat. Rien n’a été entraîné. La personnalité est un dictionnaire.
C’est un type de machine différent d’un modèle de langage, et la différence n’est pas la taille. C’est la direction. Une grammaire encode la validité ; un modèle encode la probabilité. Nefasto ne se demande jamais quel mot est le plus probable ensuite. Il se demande s’il existe un mot qui satisfait les contraintes et, s’il y en a un, en choisit un. Même graine, même sortie — pas de température, pas d’échantillonnage, rien de stochastique. Chaque choix est un prédicat que l’on peut lire. Pas d’espace latent, pas de couche cachée, aucune représentation qu’il serait interdit d’inspecter. Et il n’a besoin d’aucune donnée : ni corpus, ni ajustement fin, seulement une grammaire et un dictionnaire. Changer de profil change la voix sans toucher à la structure — cette séparation entre ce qui est dit et comment c’est construit que les LLM n’atteignent qu’après l’entraînement, par le prompting. Prolog l’atteint au moment de la conception, exprès.
J’ai écrit ailleurs sur les raisons pour lesquelles l’IA symbolique et l’IA statistique ont aujourd’hui besoin l’une de l’autre, et je ne reprendrai pas cette comparaison. Le point ici est plus étroit et plus ancien : l’approche symbolique n’a jamais été dépassée. Elle a été débordée par l’échelle. Ce n’est pas la même chose. Un outil qui résout proprement un petit problème ne devient pas faux parce que quelqu’un construit un outil plus grand qui le résout aussi.
IV. Le bricoleur et l’ingénieur
Claude Lévi-Strauss, dans La Pensée sauvage, distingue l’ingénieur du bricoleur. L’ingénieur travaille à partir de premiers principes et se procure exactement les matériaux qu’un projet exige. Le bricoleur travaille avec ce qu’il a sous la main — un ensemble clos et fini de bouts et de restes —, les recombinant en ce que le moment réclame. Lévi-Strauss en faisait un modèle de la pensée mythique, mais cela décrit Nefasto à la perfection. Dix colonnes, dix bribes chacune, recombinées en discours. Le bricoleur n’a pas besoin des ressources du monde ; il lui faut un bon inventaire et le sens de la combinaison.
Robert Kowalski donna à cette même idée une forme précise en 1979 : Algorithm = Logic + Control. La logique — ce qui est vrai, ce qui est valide, la grammaire et les prédicats — est séparable du contrôle, la stratégie par laquelle une machine cherche une réponse. Change l’un sans déranger l’autre. Nefasto est cette équation muée en plaisanterie : la logique est une poignée de faits sur la manière d’assembler une phrase, le contrôle est la résolution de Prolog, et l’on peut réécrire le vocabulaire toute la journée sans réécrire le moteur.
Un modèle entraîné dissout cette distinction. Sa logique et son contrôle sont les mêmes milliards de poids, figés ensemble, inséparables. On ne peut pas lui ajouter une règle en une ligne. On lui ajoute du comportement par ajustement fin ou par prompts, chacun avec des effets secondaires que l’on découvre plus tard. L’inventaire du bricoleur est modifiable. Le monument de l’ingénieur, non.
V. Le nom de la rose
Guillaume de Baskerville, le franciscain du Nom de la rose d’Umberto Eco, résout une série de meurtres dans une abbaye médiévale avec Aristote, l’observation et la déduction. Sans laboratoire, sans base de données, sans oracle. La bibliothèque de l’abbaye est la plus grande de la chrétienté — un labyrinthe de salles, de passages secrets et de livres interdits, un système vaste et opaque. La méthode de Guillaume est la petite : la raison appliquée à ce qu’il peut voir et lire.
Et le tour le plus cruel du livre est que sa méthode fonctionne, mais que le motif qu’il trouve n’est pas celui qu’il cherchait. Il cherchait une chaîne rationnelle de causes et trouva une trame de contingence et d’obsession. La logique était solide ; la réalité, plus trouble. Telle est la forme honnête de l’approche symbolique. Tu pars d’un modèle du fonctionnement des choses, tu en dérives les conséquences pas à pas, chaque pas est traçable, et quand cela échoue tu sais exactement quelle règle corriger. L’approche statistique, c’est la bibliothèque elle-même : tu pars d’un amas énorme d’observations, tu laisses le chercheur de motifs faire son œuvre, et tu acceptes une sortie fluide, souvent juste, que tu ne peux pleinement expliquer ni aisément réparer.
Guillaume l’emporte parce que l’abbaye est à la juste mesure d’un moine muni d’un traité de logique. Un seul bâtiment, une poignée de morts, un monde clos. Si le problème était « prédire le mot suivant dans n’importe quelle langue, dans n’importe quel contexte », il faudrait la bibliothèque, non le moine. Nefasto est Guillaume. Un modèle de langage est la bibliothèque. Les deux sont réels, les deux sont valides, et la seule erreur est de croire que l’un rend l’autre obsolète.
« Je n’ai jamais douté de la vérité des signes, Adso ; ils sont la seule chose dont l’homme dispose pour s’orienter dans le monde. Ce dont je doutais, c’était du rapport entre les signes et ce qu’ils désignent. » — Guillaume de Baskerville
Les professeurs de ce couloir, en 1989, lisaient les signes et s’y fiaient. Ils n’ont jamais douté du rapport entre le discours et ce qu’il désignait — c’est-à-dire rien. Cent lignes de Prolog connaissaient le secret avant nous tous.
Pour aller plus loin
- Tim Berners-Lee, Information Management: A Proposal (1989)
- Umberto Eco, Le Nom de la rose (1980)
- Claude Lévi-Strauss, La Pensée sauvage (1962)
- Robert Kowalski, Algorithm = Logic + Control (1979)
- Turbo Prolog et les grammaires de clauses définies — les outils, hier et aujourd’hui
- Le dépôt contento/nefasto — la renaissance moderne
