SMALLTALK POURRAIT-IL
PRENDRE LE RELAIS ?
En 1985-1986 un groupe de travail se constitue à l'université de PARIS VI, au L.I.T.P, sous la direction de Jean-François Perrot. Il comprend essentiellement des professeurs dÉcoles Normales et quelques universitaires. Ce groupe réfléchit à un cahier des charges qui permettrait de créer une version pédagogique de SMALLTALK.
* Première étape : version de SMALLTALK implémentée en Le-Lisp
Des exemples géométriques sont proposés permettant daborder : les translations, les rotations, les homothéties. (cf document « Petit poisson deviendra grand
» [Girardot 86]). Ils sont programmés dans la version MICRO-SMALLTALK implémentée en Le-Lisp par Isabelle Borne [Borne 84] qui s'est inspirée des travaux de Pierre Cointe [Cointe 81, 85]. Les concepteurs doivent programmer en SMALLTALK et en Le-Lisp pour construire l'environnement géométrique.
La syntaxe de SMALLTALK qui en résulte est assez agréable. Ce travail mené sur Macintosh 512 puis sur Macintosh+ est contemporain de la sortie de ces appareils. L'architecture du Macintosh s'inspire d'ailleurs des grands concepts de SMALLTALK (créé au Xerox Parc). Mais on ne dispose que d'un seul bouton sur la souris, alors que SMALLTALK requiert trois boutons de couleurs diffÙ?érentes : rouge, bleu, jaune. On remédie à cette difficulté en utilisant les touches de contrôle, ce qui est dommage pour une utilisation en didactique.
* Deuxième étape : utilisation de SMALLTALK 80
En 1986-1987 on abandonne cette version et on passe à SMALLTALK 80 sous l'impulsion de Jean-François Perrot. Le travail doit être repris complètement sur le plan informatique. SMALLTALK 80 est très dense et très difficile à maîtriser. J'imagine et j'implémente un logiciel « ROSA, ROSA, ROSAM
» spécialement pour les enfants de l'école élémentaire. Il utilise essentiellement la classe Carreau, composée dobjets, les carreaux, qui engendrent de superbes papiers-peints [Girardot 87]. Un objet de la classe Carreau représentant une rose crée, en dessin animé, de très jolis papiers-peints à laide de translations, de symétries et de rotations. L'enfant utilisateur du logiciel pourra en créer lui-même soit :
- en déplaçant ou transformant les objets grâce à la souris.
- en envoyant des messages grâce à des menus déroulants.
- en programmant dans les fenêtres de texte.
* Tentative d'expérimentation
Un début dexpérimentation est amorcé par Isabelle Borne, Colette Girardot et quelques I.M.F de lÉcole Normale dAuteuil à Paris qui, tous, avaient travaillé en LOGO avec leurs élèves [Borne & Girardot 89-1, 90, 91]. Ceux-ci trouvent le produit simple et bien adapté aux enfants. Mais aucune expérimentationÙ? sérieuse ne peut être menée car aucune classe ne peut être équipée de Macintosh. Ce matériel est dailleurs interdit dans les classes (seul le matériel français peut-être acheté sur les crédits de lÉtat). Une autorisation spéciale a été demandée au ministère pour que lÉcole Normale d'Auteuil puisse acheter trois Macintosh.
Par la suite le travail a été poursuivi avec la collaboration dIsabelle Borne :
- écriture dun MINI-BROWSER adapté aux enfants.
- traduction de la version en français.
Ce travail est décrit dans le mémoire de DEA de Colette Girardot, dirigé par Raymond Durand, [Girardot 94] et dont voici quelques extraits. Les exemples cités montrent comment les enfants peuvent, peu à peu, découvrir des algorithmes et des points de syntaxe spécifique du langage.
EXEMPLE 1 :
Machin est un objet courant de la classe CARREAU fabriqué avec la forme FUSEE.
Machin motifDisque: 'FUSEE'.
Machin vaDepartVisible.Machin ligne: 8.
Machin vaDepartCache.Machin glisseVersLeBas: 1.Machin ligne: 8.
Machin vaDepartCache.Machin glisseVersLeBas: 2.Machin ligne: 8.
Machin vaDepartCache.Machin glisseVersLeBas: 3.Machin ligne: 8.
Machin vaDepartCache.Machin glisseVersLeBas: 4.Machin ligne: 8.
Machin vaDepartCache.Machin glisseVersLeBas: 5.Machin ligne: 8.

Remarque importante
: La version SMALLTALK 80 ne dispose pas des minuscules accentuées
ANALYSE DE L'EXEMPLE 1 :
L'algorithme est très simple. Il s'agit d'un papier-peint engendré par des translations horizontales et verticales. Dans les étapes antérieures, il est probable que l'enfant parte du coin supérieur gauche et envoie 8 fois l'ordre :
Machin glisseVersLaDroite: 1
On note qu'il est utile de mettre à la disposition des enfants une autre méthode plus simple, sans paramètre : glisseVersLaDroite.
Machin glisseVersLaDroite: 1 équivaut à Machin glisseVersLaDroite.
Machin glisseVersLaDroite: 2 équivaut à Machin glisseVersLaDroite.
Machin glisseVersLaDroite.
Machin glisseVersLaDroite: 3 équivaut à Machin glisseVersLaDroite.
Machin glisseVersLaDroite.
Machin glisseVersLaDroite.
Il est fastidieux d'écrire trois fois la même instruction
C'est pourquoi, comme en LOGO la nécessité du repete se fait sentir très vite :
Machin repete: 3 fois: [Machin glisseVersLaDroite: 1]
Machin repete: 3 fois: [Machin glisseVersLaDroite]
Machin glisseVersLaDroite: 3
provoquent trois actions &eacÙ?ute;quivalentes.
Mais nous sommes confrontés à des difficultés de syntaxe. La méthode repete: fois:
a deux arguments:
* le nombre
* la séquence des actions
Il sera assez difficile d'expliquer cela aux enfants et seuls des situations variées permettront de faire comprendre la notion (cf exemple 2).
L'intérêt d'une méthode qui ferait d'emblée une ligne de longueur variable est évident.
ligne: nombre
self repete: nombre [self glisseVersLaDroite: 1].
Nouvelle difficulté : comment introduire le self qui désignera n'importe quel objet de la classe Carreau ? La solution didactique est de passer par les étapes suivantes en s'aidant de la variable globale Machin.
ligne: nombre
Machin repete: nombre [Machin glisseVersLaDroite: 1].
Mais, alors le programme ligne: ne fonctionnera qu'avec l'objet Machin.
Pour agir sur un autre carreau Truc il faudrait un nouveau programme :
ligneBis: nombre
Truc repete: nombre [Truc glisseVersLaDroite: 1]
Et ainsi de suite
Il faudrait autant de méthodes ligne: que d'objets carreaux. D'où l'intérêt du self, qu'il faudra franciser : laissons aux enfants l'idée de trouver un mot qui leur plaise et aux informaticiens la tâche de le rendre opérationnel
Il est très important que les enfants passent par ces stades préliminaires et que le self ne soit pas « bombardé ». Cette difficulté n'apparaissait pas en LOGO qui est un langage mono-objet. C'est toujours à la tortue que l'on s'adresse, on ne prend jamais la peine de dire à qui l'on parle. Notons, cependant que des Logo-objets ont été utilisés en Amérique du Nord [Drescher 85].
Il est alors très tentant d'utiliser la cascade
UTILISATION D'UNE CASCADE
Un papier parfaitement identique est obtenu par la cascade suivante:
Machin vaDepartVisible;ligne: 8;
vaDepartCache;glisseVersLeBas: 1;ligne: 8;
vaDepartCache;glisseVersLeBas: 2;ligne: 8;
vaDepartCache;glisseVersLeBas: 3;ligne: 8;
vaDepartCache;glisseVersLeBas: 4;ligne: 8;
vaDepartCache;glisseVersLeBas: 5;ligne: 8;
vaDepartCache;glisseVersLeBas: 6;ligne: 8.
Le point n'est plus le séparateur, il est remplacé par un point virgule.
Le nom de l'objet ne figure plus qu'une fois.
La notion de cascade semble beaucoup plus facile :
Machin glisseVersLeBas: 1. Machin tourne90.
équivaut à
Machin glisseVersLeBas: 1;tourne90.
Le sujet n'est cité qu'une fois et il est suivi de deux actions. On pourrait faire un parallèle avec la grammaire française et le rôle du « et » qui unit les deux verbes ayant un sujet commun.
Machin glisse vers le bas de 1 et tourne de 90.
Remarque : Le « et » n'est pas un « et logique » au sens strict, il signifie « puis » et désigne donc une succession de deux actions. Nous sommes confrontés aux ambiguïtés de la langue couraÙ?nte.
EXEMPLE 2 :
Machin est un objet courant de la classe CARREAU fabriqué avec la forme ROSE.
Machin motifDisque: 'ROSE'.
Machin effaceToutBlanc;vaDepartVisible.
Machin repete: 3 fois:
[Machin glisseVersLaDroite:1;symetrieVerticale;glisseVersLeBas: 1].
Machin glisseVersLaDroite: 1.
Machin symetrieVerticale.

L'exemple 2 nous fournit une autre utilisation
du « répète » et de la cascade.
EXEMPLE 3 :
Machin est encore un objet courant de la classe CARREAU
fabriqué avec la forme ROSE.

Carreau creeGrandCarreau.
Un nouvel objet GrandCarreau de la classe
Carreau est alors créé par
copie d'écran. On voit apparaître ici un nouveau concept : celui
de méthode de classe. GrandCarreau
va engendrer très naturellement,
uniquement avec des translations, un nouveau papier-peint.

GrandCarreau vaDepartVisible.
GrandCarreau ligne: 4.
GrandCarreau vaDepartCache.
GrandCarreau glisseVersLeBas: 1.
GrandCarreau Ù?ligne: 4.
La même séquence d'instructions, selon la position de départ de l'objet Machin va donner un objet GrandCarreau très différent du premier.

Quatre cas possibles pour GrandCarreau.
Ils engendrent chacun par translation des papiers différents déjà vus lors de l'animation du logiciel « ROSA, ROSA, ROSAM
»
ANALYSE DE L'EXEMPLE 3 :
Dans la mesure où les enfants auront compris que la classe Carreau est un ensemble dans lequel ils peuvent eux-mêmes créer des objets, ils auront envie d'utiliser un grand carreau de ce type pour fabriquer un papier-peint.

L'objet utilisé sera un grand carreau nommé GrandCarreau. C'est un assemblage de quatre petits carreaux, disposés de manière agréable puisque on tourne à chaque fois de 90°, ce qui crée l'esthétique du papier final. Avec cet objet GrandCarreau, seules les translations seront utiles. La programmation s'en trouve considérablement simplifiée !!! En LOGO on aurait été obligé d'écrire un programme qui dessinait un grand carreau, de positionner correctement la tortue, d'appeler de nouveau le programme et ainsi de suite
Dans une écriture plus élaborée on utiliserait un répète ou un programme récursif mais mentalement, on est obligé d'envisager toutes les positions du carreau, de faire des testÙ?s de fin
En SMALLTALK quand l'objet GrandCarreau est créé, la programmation est simple, puisqu'il n'y a plus que des translations à utiliser.
EXEMPLE 4 :
UTILISATION DE PLUSIEURS OBJETS SIMULTANÉMENT

Contrairement à ce que l'on pourrait faire en Logo graphique où l'on dirait : AV 10 à une seule tortue à la fois, sans la nommer d'ailleurs, on commande ici deux objets différents de la classe Carreau: Julie et Nestor.
ANALYSE DE L'EXEMPLE 4 :
Dans les chambres d'enfants on trouve souvent des papiers-peints qui ont la structure de l'exemple intitulé: « Le papier de Nestor et de Julie. » La programmation d'un tel papier en SMALLTALK est très simple et très naturelle. Il est assez évident d'utiliser deux objets de la classe Carreau pour créer le papier-peint :
* Julie, la tortue dessinera une première quinconce
* Nestor, le chat qui partira du point 64@64 et complétera le tableau
Il est possible que les enfants créent spontanément un tel papier (peut-être par d'autres méthodes de programmation d'ailleurs). Des erreurs de programmation pourront les amener à des résultats inattendus mais intéressants. Il faudra alors essayer de comprendre l'erreur, qui devient non seulement constructive, mais créative
Une solution très astucieuse, pour simplifier le programme serait de créer un nouveau carreau.

Un seul carreau
et uniquement des translations
pour obtenir un résultat similaire
* Conclusions provisoires
A ce stade de la réflexion, l'enseignant expérimentateur se dit:
+ Pour utiliser SMALLTALK avec les enfants, il faudra surmonter les difficultés de syntaxe inhérentes au langage. Cela est désagréable, mais possible en donnant des exemples nombreux et en adaptant bien la progression d'apprentissage.
+ Comme en LOGO la recherche des algorithmes, l'analyse des « bugs » seront très utiles dans la formation de la pensée logique de l'enfant.
+ Il faudra essayer de dépasser LOGO en ne se limitant pas aux démarches qui existent en LOGO, mais en essayant de trouver des exemples spécifiques à la programmation par objets (exemples : GrandCarreau ou Nestor et Julie).
ibÉU x+›M xt/javascript"> //