ANNÉES 1970

FORTH

Charles « Chuck » Moore travaillait au MIT, puis au Stanford Linear Accelerator Center. L'informatique de l'époque le frustrait car FORTRAN et ALGOL monopolisaient l'attention, mais ces langages l'obligeaient à passer un temps fou entre l'écriture du code, sa compilation et son exécution. Il cherchait quelque chose de plus direct, de plus immédiat.

Sa solution prit la forme d'un interpréteur de texte qu'il écrivit en ALGOL. Le principe était que tout ce qu'on lui donnait était soit un nombre, soit un mot représentant une commande. Fini les phases séparées d'édition, compilation et exécution. Tout se passait de manière interactive, dans l'instant. Il inventa des mots spéciaux comme « : » pour dire au système qu'il fallait commencer à compiler le code qui suivait, et « ; » pour lui dire de revenir au mode interprétation normal. Quand le compilateur rencontrait un tel bloc, il stockait ce « mot » – l'équivalent de nos fonctions actuelles – dans un dictionnaire pour pouvoir le réutiliser plus tard.

L'architecture de FORTH repose sur deux piles qui travaillent ensemble. La première stocke les valeurs temporaires et les paramètres, la seconde gère les cadres de pile. Cette approche donne un code compact et rapide, mais surtout extensible à volonté. En 1970, Moore travaillait sur un ordinateur IBM de troisième génération qui limitait les noms à cinq caractères maximum. Il baptisa donc son langage « FORTH », allusion en anglais à une quatrième génération de langage de programmation.

L'Observatoire National de Radioastronomie en Arizona accueillit la première version publique de FORTH en 1971. Le système servait à récupérer et analyser les données tout en pilotant le radiotélescope en temps réel. La communauté astronomique adopta cette technologie. Moore créa ensuite plusieurs versions : MiniFORTH pour les mini-ordinateurs, MicroFORTH pour les microcontrôleurs. Chaque variante s'adaptait aux contraintes spécifiques de son environnement.

FORTH utilise la notation postfixe, aussi appelée polonaise inverse. Les opérateurs viennent après leurs opérandes. L'expression 1 2 + signifie qu'on additionne 1 et 2. Cependant le fonctionnement est interactif : quand l'utilisateur tape cette expression, l'interpréteur pousse d'abord 1 sur la pile, ensuite 2, avant d'exécuter « + » qui récupère ces deux valeurs, les additionne et remet le résultat sur la pile.

La vraie force de FORTH vient de sa capacité à grandir. Les programmeurs créent de nouvelles commandes, des « mots », qui deviennent partie intégrante du langage. Cette extensibilité adapte FORTH aux besoins précis de chaque application. Le langage mélange des calculs de bas niveau avec un mécanisme puissant pour déclarer des fonctions. Une fois compilés, les programmes FORTH tournent presque aussi vite que de l'assembleur écrit à la main. Avec un compilateur qui optimise agressivement, FORTH est très performant dans le traitement numérique. Pour les systèmes embarqués, le matériel prototype ou les chargeurs d'amorçage, il suffit d'un noyau compilateur minimal. Une fois ce noyau disponible, on peut construire un compilateur FORTH complet en n'utilisant que FORTH.

La philosophie minimaliste de FORTH se retrouve dans la gestion de la mémoire. Le langage ne propose que le stockage de valeurs simples ou doubles, généralement des entiers. Pour construire un tableau, il faut allouer une variable et incrémenter un pointeur interne dans le dictionnaire afin de réserver plus d'espace. Un tableau en FORTH n'est qu'une région de mémoire sans documentation particulière. Le langage n'offre pas de tas (heap) natif non plus, les programmeurs écrivent leurs propres routines de gestion mémoire.

Les applications concrètes de FORTH se multiplient. Sun Microsystems l'intègre dans le firmware OpenBoot de ses stations de travail. WearLogic a développé un portefeuille électronique basé sur un microcontrôleur AVR programmé en FORTH. AEMS (Advanced Energy Monitoring Systems) emploie FORTH pour son Yatesmeter, un instrument sophistiqué qui surveille les pompes en temps réel. Ces réussites montrent que FORTH garde sa pertinence pour les systèmes embarqués et le contrôle matériel.

L'évolution technologique n'a pas affaibli l'intérêt pour FORTH. Son approche interactive et sa capacité à construire des abstractions par étapes en font un outil pédagogique de valeur. Des projets comme pbFORTH pour les robots LEGO Mindstorms révèlent son potentiel pour enseigner la programmation. Sa syntaxe particulière et son modèle mental différent des langages conventionnels offrent aux étudiants une autre perspective sur les concepts de programmation.

La communauté FORTH est active. Des groupes d'utilisateurs existent encore dans plusieurs pays, des conférences comme euroFORTH se tiennent régulièrement. Les développements récents incluent GNU Gforth, une version portable qui respecte les standards, et VFX Forth, un compilateur optimisant moderne qui accélère les programmes FORTH d'un facteur trois à cinq par rapport aux compilateurs classiques.

Plutôt que d'imposer une abstraction entre l'homme et la machine, FORTH crée un lien direct avec le matériel tout en autorisant la construction d'abstractions utiles.