Contexte historique

Le Heuristic Compiler, développé par Herbert Simon en 1961, constitue l’une des premières implémentations du modèle de résolution de problèmes par moyens‑fin (means‑ends analysis) appliqué à la programmation. Le système s’appuie sur le General Problem Solver (GPS) pour explorer les étapes de construction d’un programme, illustrant la vision de Simon selon laquelle programmer est un processus de recherche guidée. Quarante‑trois ans plus tard, le projet MIT Programmer's Apprentice a produit KBEmacs (1984), un assistant de programmation qui encode la connaissance experte sous forme de « clichés », c’est‑à‑dire de motifs réutilisables invoqués via une langue anglaise stylisée. Les deux artefacts offrent des théories explicites du codage, aujourd’hui rarement présentes dans les assistants d’IA.

Architecture et mécanismes du Heuristic Compiler

Le compilateur heuristique fonctionne comme un moteur de recherche itératif. Il reçoit une description de la tâche sous forme de pré‑et post‑conditions, génère un arbre de sous‑objectifs et applique le GPS pour sélectionner les opérateurs qui réduisent l’écart entre l’état actuel et l’objectif. Chaque opérateur correspond à une routine de programmation pré‑existante ; le système les combine dynamiquement, créant ainsi un programme cible. La version reproduite par les auteurs a permis de générer le code source exact présenté dans l’article de Simon de 1963, confirmant la fidélité de la reconstitution.

Architecture et mécanismes de KBEmacs

KBEmacs repose sur une base de connaissances de clichés, chaque cliché décrivant une construction syntaxique ou algorithmique courante. L’utilisateur formule des commandes en anglais simplifié, par exemple « insert loop », que le moteur traduit en insertion de la séquence de code associée. Le système inclut un auto‑test de décembre 1984 qui calcule la suite SQRT (les racines carrées successives) pour valider l’intégrité du moteur de clichés. La reanimation a reproduit cette séquence, démontrant que le moteur de pattern‑matching fonctionne encore correctement lorsqu’il est exécuté sur une machine moderne.

Reanimation et portée pour les assistants de codage modernes

Les chercheurs ont employé Claude Code (Opus 5.5) d’Anthropic pour automatiser la compilation, le portage et le test des deux programmes historiques. Cette utilisation d’un assistant IA contemporain illustre une boucle de rétroaction : un outil moderne aide à faire revivre des théories de programmation du passé, qui à leur tour offrent des repères explicites pour la conception d’assistants actuels. Les deux systèmes partagent le principe d’adaptation de routines existantes, un contraste avec les modèles de génération purement statistique dominants aujourd’hui. Leur absence dans les assistants modernes souligne un manque de transparence explicite sur les stratégies de recherche et de réutilisation de code, un point que les concepteurs d’IA pourraient examiner pour améliorer la traçabilité des suggestions de code.