Little Thinker, simulateur de micro-processeur, pour enseigner
Informatiques individuelle et professionnelle sont sous le contrôle quasi total d'une seule entreprise, Microsoft. Les produits de cette entreprise respectent peu les normes, utilisent des formats propriétaires (1), et la démarche de l'entreprise elle-même est très agressive (2). Par réaction, un nombre croissant de bénévoles conçoivent des logiciels "libres", trés souvent gratuits. Les réalisations sont parfois très concurentielles et professionnelles, certains projets sont ambitieux (GNU, OpenOffice, Gnome et Linux...) et d'autres beaucoup plus modestes comme ce petit logiciel libre que le concepteur nous présente ici.
"Enseignant en BTS informatique de gestion, j'ai la charge d'un point du référentiel qui concerne le matériel informatique, notamment les travaux pratiques. Trouver des travaux pratiques démontrant les fonctionnalités d'un microprocesseur n'est pas aisé, surtout avec des étudiants qui ne connaissent que l'interface graphique (ce qui est très éloigné du fonctionnement réel d'un ordinateur). Les démarches habituelles pour traiter ce point sont soit la simulation sur papier (plan de l'architecture du microprocesseur, et simulation de l'éxécution une à une des instructions d'un programme sur ce plan), soit la programmation en assembleur (langage très proche du microprocesseur). A la première démarche, on peut reprocher sa lourdeur et sa consommation de papier, à la seconde le risque de rejet par l'étudiant, dû à la complexité de mise en place de l'environnement du programme (3).
C'est ce constat qui m'a poussé à concevoir LittleThinker, un petit simulateur de micro-processeur très simplifié. L'objectif est d'offrir une simulation visuelle des zones du processeur mises en jeu par un petit programme que l'étudiant doit réaliser. LittleThinker est constitué d'un jeu réduit d'éléments que l'on trouve habituellement dans un microprocesseur (registres, accumulateur, compteur ordinal, registre d'état). Il offre une petite mémoire de 50 cases, dans lesquelles on peut écrire des données ou des commandes. Ces commandes sont tirées d'un jeu d'instructions conçu pour LittleThinker, et compris par lui. L'étudiant dispose du descriptif de chacune des commandes, et doit réaliser des exercices, en concevant un programme. Il saisit ensuite ce programme et peut en lancer l'éxecution. Little Thinker obéit aux instructions, et met en évidence les zones qui travaillent dans le microprocesseur, pas à pas, visuellement.
J'ai testé ce projet pour la première fois cette année, avec deux classes de TS. Il me semble que les étudiants ont assez bien intégré le fonctionnement de leur machine. Le projet (c'est la version 0.1) comporte un certain nombre de lacunes, de bogues : On ne peut pas arrêter le déroulement d'un programme, on ne peut pas régler le cadencement de l'horloge (c'est pourtant un point majeur, car la lenteur est un atout au démarrage de la séquence afin d'apréhender le comportement de la machine, mais cela devient vite irritant pour les longs programmes), l'affichage n'est pas réaliste, les registres sont de taille infinie (ou pas loin) et en décimal. Mais ce projet est libre (au sens GNU). Vous pouvez vous en servir, vous pouvez le modifier, l'améliorer, voire même le vendre.. Vous ne pouvez simplement pas le refermer, c'est tout. Il appartient à tous...
Bien qu'on me l'ai demandé, je n'ai pas voulu utiliser la démarche de Microsoft, en ce sens que le programme est disponible pour toute plateforme. Je n'utilise que GNU/Linux en ce qui me concerne, et j'encourage tout le monde à faire de même. Mais cela irait contre la liberté que je défends, que de vous obliger à utiliser GNU/Linux pour bénéficier de LittleThinker. J'ai donc développé LittleThinker en Java, il vous suffit de disposer du JRE ou du JDK (4) pour faire tourner mon projet. Le programme, les sources du programme, des copies d'écrans, la documentation du langage de programmation, et des exercices sont gratuitement et librement accessibles sur http://sylvain.cherrier.free.fr . Vous pouvez tout prendre, tout modifier, et même me tenir au courant de vos expériences pédagogiques , ou/et des améliorations que vous apportez au produit. De mon coté, j'éspère sortir une version 0.2 pour la rentrée..."
Notes :
"(1) Word par exemple utilise un format de stockage propriétaire, non normalisé, et s'éloigne volontairement du format RTF, standard celui-là, qui permet l'échange avec d'autres logiciels.
(2) Il suffit pour s'en convaincre de lire l'ouvrage 'Le hold-up planétaire, la face cachée de Microsoft', de Roberto di Cosmo, dont un résumé est disponible sur http://www.toolinux.com/lininfo/dossiers/interviews/dicosmo/
(3) L'assembleur sur PC demande avant toute programmation un ensemble de déclarations sur l'architecture du programme que l'on va écrire, ce qui fait appel à des notions qui dépassent le cadre et le temps défini pour ce point du référentiel.
(4) le JRE (Java Runtime Environment) permet l'exécution d'un programme Java. Le JDK (Java Development Kit) permet quant à lui d'exécuter ET développer des programmes Java. Ils sont librement accessibles sur le site de Sun. D'autres implémentations de Java existent..."
Pour en savoir plus ou se procurer LittleThinker : http://sylvain.cherrier.free.fr
Texte de
Sylvain Cherrier
Suivi de la rubrique Logiciels Libres : Claude Micouin logiciels.alternatifs@adapt.snes.edu