APL -LANGAGE DE PROGRAMMATION POUR DES PROFESSEURS PARESSEUX

 

par Andrei Buzin

 

 

 

Préface, par B. Mailhol

 

Andrei Buzin est maintenant professeur à l'Université de Moscou; il a l'honneur d'enseigner l'APL à ses étudiants, parmi d'autres enseignements de mathématiques et d'informatique.

 

Il nous a fait l'immense plaisir de nous rappeler, par cet article, le rôle que peut jouer l'APL comme outil d'enseignement. Enseignement des mathématiques, de la modélisation, et l'importance de ses qualités de concision dans le développement du cours lui-même.

 

En plus, nous avons eu la joie de constater qu'il avait fait l'effort de traduire (ou faire traduire par l'un de ses étudiants) ce texte dans notre langue. Nous l'en remercions vivement.

 

 

 

L’enseignement, c’est-à-dire la transmission des connaissances d’une personne à une autre personne orientée vers un but précis, représente un processus spécifique. Il a des traits positifs et négatifs: on peut citer parmi les premiers la grandeur de la profession de l'enseignant (dans la société humaine, tout n’est point transmis par les gènes se trouvant dans les cellules génitales, mais beaucoup de choses sont transmises par des "gènes généralisés" ou, autrement dit, en cours des relations sociales), parmi les deuxièmes - la réitération ennuyeuse des opérations d’enseignement.

 

L’idée d’utiliser les technologies informatiques modernes pour transférer les opérations d’enseignement routinières à un assistant électronique est tout à fait logique. L’ordinateur sait faire beaucoup : présenter la matière à étudier, l’illustrer, vérifier les réponses. Il peut faire certaines de ces opérations beaucoup mieux que l’homme, rapidement et concrètement. Ainsi par exemple, le manuel sous forme d’hypertexte est plus pratique que le manuel sur papier, les possibilités graphiques surpassent souvent des échantillons polygraphiques et quant à la vitesse de la reproduction de la matière à étudier, elle est vraiment formidable. Pour être juste, il faut remarquer que l’ordinateur ne possède pas, pour le moment, tous les organes des sens propres au professeur vivant et comprend mal des opérations peu nettes (flou au point de vue logique). Mais c’est l’affaire de l’avenir et, je pense, d’un avenir qui n’est pas très lointain (rappelez-vous, pouvions-nous nous imaginer, il y a dix ans, qu’aujourd’hui l’ordinateur pourrait distinguer avec succès le langage parlé ou résoudre de manière analytique des équations différentielles?).

Le transfert des fonctions d’enseignement, comme de toutes autres fonctions, à l’ordinateur est lié à la création d’un logiciel et, par conséquence, à la sélection du langage de programmation. Cette sélection est prédéterminée, dans une grande partie, par les fonctions que le logiciel doit effectuer. L’élaboration de nouveaux langages de programmation est justement favorisée par l’apparition du besoin de créer le logiciel spécifique. Rappelez-vous les exemples historiques – Fortran et Cobol. Le Fortran permettait d’enregistrer et de traduire des formules des mathématiques élémentaires et il a apparu le premier, cette action étant vraiment primordiale pour les calculateurs qui étaient à l’origine de la création du matériel informatique. Fortran s’est bien installé en U.R.S.S car on s’y en occupait également. Cobol a été créé et s’est largement répandu dans des pays à une économie développée permettant de décrire rapidement des modèles économiques. Par contre, en U.R.S.S avec son économie, le Cobol était de l’exotisme.

On peut citer un grand nombre d’exemples : Basic pour des premiers ordinateurs personnels, C++ pour la description des objets " vivants ", Java pour le transfert d’objets par réseau d’ordinateurs de différents types, les systèmes de gestion de bases de données (Dbase, Oracle, FoxPro, etc.) pour la programmation de bases de données, etc.

Et sur quoi enregistrer les programmes d’enseignement ? Il n’existe pas probablement de réponse universelle, les programmes d’enseignement étant très variés par leurs fonctions. La création de certains programmes d’enseignement exigent apparemment la synthèse de blocs enregistrés en différents langages de programmation. Il est peu probable que l’on puisse créer le simulateur pour l’instruction des aviateurs sans systèmes de type Visual Studio. Les programmes d’enseignement des mathématiques russes sont enregistrés en Pascal et C, tandis qu’un des derniers programmes est enregistré en Java, les créateurs ayant voulu utiliser les possibilités de référence de l’Internet Explorer.

Imaginez que vous élaborez un cours d’enseignement original. Si, en plus, vous savez programmer, les mains vous démangent de vous faire assister par un ordinateur. Surtout après avoir réitéré la même chose à vos étudiants une dizaine de fois. Votre assistant devrait être suffisamment "vivant" pour savoir résoudre les problèmes sophistiqués et faire réagir l’étudiant: il ne suffit pas de visualiser un texte donné. Si vous vous mettez à rédiger un programme d’enseignement en C, Pascal ou Java, il est sûr et certain que le temps vous manquera pour préparer vos cours. En plus, votre "tutoriel" terminé, vous n’aurez pas le temps pour le modifier en recompilant chaque fois une nouvelle version. La compilation et la description détaillée des variables vous demanderont beaucoup plus de temps que l’élaboration du concept de l’enseignement et la rédaction des problèmes d’enseignement. J’ai essayé une fois d’établir en Pascal un système pour apprendre aux étudiants les principes d’addition des codes machine, et j’ai compris que cette tâche est pour un groupe d’analystes-programmeurs, et non pour un professeur d’informatique. Je l’ai donc rédigé en APL...

Tout le monde sait que les modules exécutables fonctionnent plus rapidement que les interpréteurs. Or, mon programme d’enseignement pour les codes machine est aussi rapide. Le fait est que l’essentiel du temps, lorsqu’on travaille avec un système d’enseignement, est consacré à l’attente de la réponse de l’étudiant! Il met plus de temps à réfléchir que l’ordinateur! Par contre, les avantages d’un interpéteur, surtout lorsqu’il s’agit d’un APL, se manifestent pleinement lors de la rédaction des systèmes d’enseignement.

En effet, le texte visualisé sur le display par le système d’enseignement, peut être immédiatement interprété comme une commande en langage de programmation. Les merveilleux systèmes d’enseignement WINTRO et WTUTOR de DyadicLtd. ont été conçus de cette manière (tant qu’ils ne furent pas modifiés). Rien de plus facile que d’établir le tutoriel de cette espèce : il suffit de créer un vecteur des matrices de symboles et la fonction qui visualise progressivement les composantes de ce vecteur sur le display. Si je ne me trompe pas, l’idée géniale de réunir ensemble le texte d’enseignement avec le milieu d’expérimentation a été mise en oeuvre pour la première fois à l’aube de l’ère informatique dans le rédacteur de textes mathématiques ChiWriter (en usage avant Tex et MathWord). Pour créer en APL un système d’enseignement interactif, le professeur devra seulement rédiger le texte en y employant les expressions APL. (A dire vrai, MathLab et Mathematica offrent les mêmes possibilités remarquables).

L’utilisateur d’un système d’enseignement peut non seulement se servir directement d’une expression APL proposée dans le texte, mais aussi de faire des expériences avec les siennes.

Avec sa procédure d’entrée/sortie simplifiée à l’extrême, APL offre d’autres avantages pour la création des systèmes d’enseignement. Notamment, l’expression APL:

 

¢ FALSE¢ ¢ TRUE¢ [1+ =  1¯ ¬ (?10)(¢ +-¢ [?3])(?10)¢ =¢ ]

 

est un simulateur de calcul mental tout prêt (avec entrée et sortie)! Imaginez la même chose faite en langage de programmation classique.

Un autre fait important: les systèmes APL sont facilement modifiables. Les cours d’enseignement sont constamment améliorés, ils comportent de nouveaux exemples et problèmes qui sont facilement intégrables au système rédigé en APL.

Bref, servez-vous d’APL si vous voulez confier à l’ordinateur une partie de votre travail d’enseignant. C’est une bonne occasion pour s’épargner de répéter maintes fois la même chose, restant toujours présent dans le processus de l’enseignement.