
Il y a des projets qui naissent d'une frustration. EduCode est de ceux-là. En voulant faire découvrir la programmation à des débutants, j'ai retrouvé les mêmes obstacles partout : des environnements à configurer avant même d'écrire une ligne, des messages d'erreur incompréhensibles, et une syntaxe anglaise qui ajoute un effort de traduction à la charge déjà lourde de l'apprentissage. Un apprenant francophone devait comprendre la logique ET mémoriser des mots-clés étrangers. J'ai voulu supprimer cette friction. EduCode est un environnement éducatif qui interprète un pseudo-code exécutable entièrement en français : « si age >= 18 alors affiche 'Majeur' fin si » se lit comme une phrase, même par quelqu'un qui n'a jamais programmé.
Le cœur du projet, le moteur d'interprétation, est écrit en Object Pascal (Delphi). Ce choix n'est pas nostalgique. Pascal reste un langage rapide, fortement typé, qui compile en un exécutable natif sans dépendance : EduCode se lance sans installation, tourne en local, et pèse moins de 7 Mo. Pour un outil destiné à des machines scolaires parfois anciennes, cette légèreté est décisive. Et Pascal, discipliné et lisible, se prête particulièrement bien à l'écriture d'un interpréteur clair.
Un interpréteur, dans le fond, se résume à trois étapes. La première est l'analyse lexicale. Le lexer parcourt le texte source caractère par caractère et le découpe en unités élémentaires, les tokens : un nombre, un mot-clé, un identifiant, un opérateur. Chaque mot-clé français est reconnu via un dictionnaire (« si » devient le token ttSi, « tant » devient ttTantQue). En Pascal, un TDictionary<string, TEduCodeTokenType> rend cette correspondance immédiate, accents compris.
La deuxième étape est l'analyse syntaxique et l'évaluation. EduCode utilise un analyseur à descente récursive : une cascade de fonctions qui s'appellent l'une l'autre selon la priorité des opérateurs. EvalOr appelle EvalAnd, qui appelle les comparaisons, puis l'addition, puis la multiplication, puis la puissance, et enfin les valeurs primaires. Cette hiérarchie d'appels reproduit exactement les règles mathématiques : la multiplication est évaluée avant l'addition, tout simplement parce que EvalMulDiv est plus « profond » dans la cascade que EvalAddSub. C'est l'un des rares cas où la structure du code épouse aussi naturellement le concept qu'il implémente.
La troisième étape est l'exécution proprement dite. Chaque instruction est interprétée dans la foulée. Les variables vivent dans des « scopes » empilés (une pile de dictionnaires), ce qui gère proprement les portées : une variable locale à une fonction disparaît quand la fonction se termine. Fonctions et procédures sont repérées lors d'un pré-scan, avant toute exécution : le moteur enregistre leur position dans le source, ce qui permet de les appeler avant même leur déclaration. L'apprenant n'a jamais à se soucier de l'ordre des définitions.
Un point mérite d'être souligné : la gestion des erreurs. Chaque token conserve son numéro de ligne, si bien que toute exception pointe précisément l'endroit fautif, « Ligne 12 : Division par zéro » plutôt qu'une trace cryptique. J'ai même détourné le mécanisme d'exceptions de Pascal pour implémenter « retourne », « arrête » ou « continue » : lever une exception dédiée est une manière élégante de remonter proprement à travers plusieurs niveaux de boucles. Un garde-fou détecte aussi les boucles infinies au-delà d'un seuil d'itérations.
Le typage explicite (« x est un nombre ») n'est pas une contrainte gratuite : il force l'apprenant à réfléchir à la nature de sa donnée et permet des conversions cohérentes lors des saisies. Autour du moteur, l'architecture reste sobre : un petit serveur HTTP local sert une interface web (éditeur et console), et tout tourne sur 127.0.0.1 sans qu'aucune donnée ne quitte la machine.
Ce qui frappe, en écrivant un tel projet, c'est que Pascal n'a rien d'un langage « mort ». Il compile vite, produit du natif, gère chaînes Unicode, génériques et interfaces avec aisance, et donne un code qu'on relit sans peine des mois plus tard. Pour un interpréteur pédagogique, un domaine où la clarté du code compte autant que sa performance, c'était le bon outil. EduCode est gratuit, pensé pour l'enseignement, et il prouve au passage qu'on peut construire quelque chose de moderne et utile avec un langage que trop de gens rangent, à tort, au rayon des antiquités.

