Si vos élèves ont une calculatrice, demandez-leur d'y entrer l'expression arithmétique suivante :

2 + 3 x 5.

Affichez au tableau les résultats obtenus. La majorité des élèves auront sans doute 25; les autres auront 17. J'ai d'ailleurs constaté que le nombre de calculatrices affichant 25 est généralement supérieur à celui qui affiche 17. En fait, les calculatrices du genre « Abonnez-vous à notre revue et vous obtiendrez en prime une fantastique calculatrice » affichent habituellement 25.

Vous aurez alors tout en place pour une jolie discussion mathématique. Quelle calculatrice a raison ? Y a-t-il une vérité ? Comment s'entendre sur la réponse ? Etc.

Si vos élèves ont accès à un ordinateur, demandez-leur de pitonner l'expression dans l'outil calculatrice. Est-ce le même résultat dans une calculatrice Linux ? Windows ? Mac ? Comment se fait-il que le résultat est immanquablement 17 ? L'ordinateur aurait-il toujours raison ?

Continuez à ébranler vos élèves : entrez dans Squeak et demandez-leur de calculer l'expression. (Voir l'animation ci-dessus.) Le résultat est 25 ! L'ordinateur n'est même pas cohérent...



Les mathématiques, c'est aussi discuter de mathématique. Évidemment, on sait fort bien que la calculatrice dite scientifique connaît la priorité des opérations. Le calculatrice type « Châtelaine » calcule de gauche à droite. Mais Squeak, le fameux Squeak, comment se fait-il qu'il nous donne ce 25 qu'on sait arithmétiquement erroné ? Encore ici, on a un beau sujet d'exploration. Pour Squeak, l'addition, la multiplication, etc. ne sont pas des opérations. Ce sont des messages envoyés à un objet. Dans Squeak, un objet peut recevoir trois types de message. Les messages unaires, binaires et à mots-clés. Par exemple, l'expression

'Gilles' reverse

envoie le message unaire reverse à l'objet 'Gilles'. Le résultat sera quelque chose comme selliG (renversement de l'ordre des lettres). Autre exemple de message unaire :
4 negated
envoie le message negated à 4 et le résultat sera -4.

Les messages binaires sont du type 3 + 5 où le message + est envoyé avec l'argument 5 à l'objet 3.

Les messages à mots-clés peuvent avoir plusieurs arguments. Par exemple, le message copyFrom:to:

'Jobineries' copyFrom:3 to:6

donnera la chaîne de caractères 'bine' soit les caractères 3 à 6 de Jobineries. (Dans Squeak, le premier caractère est 1 et non 0 comme dans la majorité des autres langages de programmation.)

La convention dans Squeak est la suivante : si on a une expression complexe, on doit, de gauche à droite, d'abord réaliser les messages unaires, puis les messages binaires pour terminer avec les messages à mots-clés. Évidemment, des parenthèses (comme en arithmétique) doivent toujours être exécutées en premier. Donc, dans le cas qui nous occupe, l'expression 2+3*5 est composée de deux messages unaires. On doit donc effectuer d'abord le message + et ensuite le message *.

J'entends déjà ici des gens me dire : « Mais les élèves seront tous mêlés. ». En fait, ils seront surtout à l'affût des conventions. Et c'est ce qui importe. Il faut absolument qu'un élève qui entre dans un système arrive à comprendre les conventions du système. Or pour qu'il puisse comprendre le sens du terme « convention », il faut qu'il puisse en comparer plusieurs qui utilisent les mêmes symboles. Des élèves mêlés? Mais non ! des élèves conscients.