Réaliser un interpréteur en Pascal

Avec Free Pascal sous Lazarus


précédentsommairesuivant

I. Le projet

Cette partie décrit le projet et fournit des informations générales.

I-A. Les objectifs du projet

Le projet GVLOGO est né en 2014. Il s'agissait d'implémenter le langage LOGO sur un PC (avec Windows ou Linux).

À présent que l'écriture des composants du logiciel est terminée et que ce dernier fonctionne de manière satisfaisante, l'objectif est triple :

  • proposer aux programmeurs ou apprentis programmeurs la description de la réalisation complète d'un interpréteur et de son environnement à l'aide d'outils gratuits, évolués, stables et facilement disponibles ;
  • offrir un langage de programmation adapté à des enfants, mais dont les possibilités sont étendues grâce au traitement des listes ;
  • inviter les nostalgiques des années 70 à des moments de rêverie…

Le langage de programmation choisi pour le développement est un avatar de Pascal qui est connu pour sa grande lisibilité et sa puissance : Free Pascal sous l'environnement de développement intégré Lazarus. Non seulement Pascal a lui aussi des vertus pédagogiques, mais il fonctionne sur de nombreuses plates-formes (dont Windows et Linux) et est gratuit. Les sources de tout le projet sont par ailleurs largement exploitables avec Delphi, un autre environnement plus puissant que le premier, mais payant.

Image non disponible

I-B. Qu'est-ce que GVLOGO 

GVLOGO est un langage de programmation. Il descend de LOGO, lui-même apparu dans les années 60 à la suite de recherches menées par des universitaires du M.I.T. (U.S.A.) autour du mathématicien Seymour Papert.

S'appuyant sur des travaux de Piaget relatifs à l'acquisition de connaissances et de méthodes chez l'enfant, la visée du projet était pédagogique : rendre l'élève acteur de son apprentissage, y compris et surtout lorsque cet apprentissage devait passer par un ordinateur. En cela le projet s'opposait à l'Enseignement Assisté par Ordinateur alors en vogue qui se contentait le plus souvent d'un scénario figé.

« Dans bien des écoles, aujourd'hui, l'expression « Enseignement Assisté par Ordinateur » signifie que l'ordinateur est programmé pour enseigner à l'enfant. On pourrait dire que l'ordinateur sert à programmer l'enfant. Dans ma vision des choses, l'enfant programme l'ordinateur et, ce faisant, acquiert la maîtrise de l'un des éléments de la technologie la plus moderne et la plus puissante, tout en établissant un contact intime avec certaines des notions les plus profondes de la science, des mathématiques, et de l'art de bâtir des modèles intellectuels. »

(S. Papert - Jaillissement de l'esprit, ordinateurs et apprentissage, Flammarion 1981)

Peut-être avez-vous utilisé ce langage au cours de votre scolarité en pilotant sur l'écran de l'ordinateur un triangle (baptisé « tortue ») grâce à une série de commandes telles que : AVANCE, RECULE, GAUCHE, DROITE… Comme cette tortue pouvait laisser une trace de son passage, vous obteniez des dessins en programmant ses déplacements. Plus tard, peut-être avez-vous aussi manipulé les listes LOGO pour traiter des problèmes d'intelligence artificielle… Et quand bien même vous n'auriez rien fait de tout cela, peu importe, car programmer en LOGO est très simple !

I-C. En quoi ce projet peut-il être utile 

Si vous ne connaissez rien à la programmation, GVLOGO (le produit fini) vous initiera à ses grands principes.

Si vous êtes en contact avec des enfants ou des adolescents, GVLOGO leur permettra une première approche de la programmation tout en développant leur sens logique, leur représentation dans l'espace et leur capacité à résoudre des problèmes par eux-mêmes.

Si vous êtes programmeur ou si vous aspirez à l'être, vous pourrez être intéressé par le logiciel lui-même dont les fichiers source sont fournis et largement commentés. Bien qu'il ne s'agisse pas d'un tutoriel d'apprentissage de la programmation, ce projet met en œuvre de nombreuses techniques in vivo. J'ai souvent regretté, en pêchant sur Internet, de rapporter dans mon filet des poissons trop maigres pour me nourrir ou beaucoup trop gros pour mon estomac : entre l'exemple trivial et la bibliothèque absconse, j'ai pensé qu'il devait y avoir l'espace pour un projet moyennement complexe, à portée d'un programmeur solitaire.

Image non disponible

I-D. Combien dois-je débourser pour acquérir GVLOGO 

Le logiciel est fourni avec tous les fichiers source et exécutables. GVLOGO est protégé par la licence GNU qui garantit le droit de disposer des fichiers fournis sans avoir de redevance à verser à l'auteur. Cependant, ce dernier est protégé quant à l'origine du développement.

La documentation, en particulier le manuel que vous avez devant les yeux, est protégée par un copyright si bien que toute reproduction la concernant, même partielle, doit être soumise à l'auteur pour approbation. Elle est offerte gracieusement avec GVLOGO.

Pour résumer, GVLOGO est entièrement gratuit. Cela dit, si vous jugez ce logiciel utile et que vous mesurez le temps de travail qu'il représente, rien ne vous interdit de verser une contribution, même symbolique, via mon site et mon compte Paypal !

I-E. De quoi ai-je besoin pour travailler 

Tous les outils présentés sont entièrement gratuits.

Pour examiner les fichiers source fournis, un simple éditeur suffit : je vous conseille un outil adapté aux développeurs comme NotePad++(1) (pour Windows) ou Geany(2) (pour Linux). Il aura au moins l'avantage de faciliter la lecture des fichiers grâce à la coloration syntaxique.

Pour compiler les mêmes fichiers, Lazarus est le choix qui s'impose puisque GVLOGO a été développé avec lui. Il fonctionne aussi bien sous Windows que sous Linux. La seule bibliothèque extérieure absolument indispensable, elle aussi commune aux deux systèmes d'exploitation, est la bibliothèque graphique BGRABitmap(3) : au TCanvas standard de Free Pascal, elle ajoute entre autres la possibilité de dessiner avec anticrénelage, de contrôler la transparence et de fusionner des couches, ce qui sera très utile au moment d'implémenter la tortue graphique. Le projet final utilise par ailleurs le paquet RichMemo gratuit lui aussi et fourni comme le précédent.

Enfin, les logiciels devraient fonctionner sur les versions de Windows depuis XP et sur Linux. Les tests ont été effectués sans problème avec Windows 8.1 et Linux Mint 17.1 sur un système 64 bits.

I-F. Plan du tutoriel

La réalisation de GVLOGO est modulaire. Tout d'abord, nous créerons une unité de traitement des erreurs qui sera utilisée dans tous les modules. Dans un second temps seront étudiés les objets GVLOGO et leur implémentation : les mots, les listes, les listes de propriétés et la tortue graphique. Les objets sont en quelque sorte les briques qui servent de fondation au langage.

L'étape suivante consistera à coder les outils nécessaires à l'interpréteur, à savoir les piles et un évaluateur d'expressions mathématiques.

Une place importante sera alors consacrée aux variables locales et au noyau. Comme la mission de ce dernier est de gérer le contenu des éditeurs, les variables, les procédures et les paquets, tous ces éléments seront tour à tour étudiés.

Viendra alors l'interpréteur lui-même dont la tâche sera grandement simplifiée par tout le travail réalisé en amont. Pour clore ce qui se rapporte aux fonctionnalités, les primitives seront étudiées avec leur propre unité. Il restera à s'occuper rapidement de l'architecture de l'interface, depuis l'éditeur jusqu'au débogueur, en passant par la zone de saisie, celle de texte et celle réservée à la tortue.

Image non disponible

I-G. Conventions

Les éléments de programmation en GVLOGO sont écrits en bleu.

Les éléments de programmation de Pascal, en dehors des listings, sont écrits en rouge. Les classes sont en rouge gras.

Les unités utilisées ou créées sont en noir gras.

Ce pictogramme indique une astuce, un point intéressant pour faciliter la programmation.

Ce pictogramme indique un point à souligner.

Ce pictogramme attire l'attention sur un point sensible, une difficulté particulière.

I-H. Télécharger GVLOGO

Téléchargez GVLOGO ici, avec son code source et ses exemples.

I-I. Contacter l'auteur

Il existe sans doute des méthodes plus efficaces que celles que j'ai employées pour résoudre les problèmes liés à l'implémentation d'un interpréteur LOGO, mais je tenterai de justifier mes choix. Par exemple, l'interpréteur de formules mathématiques a été traité à partir de l'algorithme de « shunting-yard » alors que les solutions courantes font plutôt appel à des arbres : il s'agissait justement de varier les approches et non de reproduire sans cesse les mêmes schémas, car c'est confronté à quelques difficultés que le programmeur, quel que soit son niveau, peut espérer progresser.

Bien entendu, certains aspects du programme sont à améliorer : je pense notamment à la vitesse d'exécution de l'ensemble, même si elle reste tout à fait acceptable. En général, les approches pédagogiques ont été privilégiées, souvent au détriment des performances. Il sera toujours possible de poser des questions, de critiquer les réalisations et de proposer des solutions plus élégantes et/ou plus efficaces que les miennes !

Enfin, l'écriture de milliers de lignes est une aventure à la limite des possibilités humaines : des erreurs émaillent forcément les unités produites. Aussi peu nombreux que possible mais forcément présents, les bogues empoisonnent la vie des utilisateurs et celle des programmeurs : que chacun se fasse un devoir de les signaler et de proposer des solutions pour leur éradication !

Pour cela, n'hésitez pas à envoyer un mail à : .

Vous pouvez aussi me joindre via mon site personnel : www.lettresenstock.org.

Bonne lecture, bonne réflexion… et bon LOGO !

Gilles Vasseur, Sunday 22 March 2015.

I-I-1. Remerciements

Merci à FRANOUCH, f-leb, Cédric DUPREZ, Claude Leloup et Malick SECK pour leur relecture. Je remercie tout particulièrement Alcatîz pour son aide et ses conseils.


précédentsommairesuivant

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2015 Gilles Vasseur. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.