Suite à un post sur Facebook qui liait vers cet article, j'ai laissé ce commentaire :

« Le problème avec cet article, c'est que l'argument est faible : «Parce qu'ils le font, on devrait le faire aussi.» Former un prof en 2 heures à utiliser par exemple Scratch ? C'est impensable. Pourquoi ? Surtout parce que les profs du primaire sont en majorité mathophobes (lire Papert à ce sujet) Aussi parce qu'ils n'y croient tout simplement pas. En effet, les élèves qui utilisent Scratch débordent du programme «normal (i.e. scolaire)» Voir des variables, le plan cartésien, l'algorithmique, etc. en 3e année est inimaginable pour la grande majorité des enseignants. Pourtant, les enfants APPRENENT fort bien ces notions (et plus encore) à ce niveau. Mais, programme MELS oblige, les variables c'est plus tard qu'on voit ça. Idem pour les nombres entiers, réels, etc. Or, il est absolument impossible de programmer sans ces notions. Au Québec, les initiatives en programmation sont tout au plus anecdotiques. Même les CP sont frileux car très inconfortables de ce qui est étranger à WORD ou POWERPOINT ou la recherche Internet...
L'argument au regard de la créativité est aussi très faible. Car c'est comme si les enfants n'utilisaient pas de créativité en raisonnant des problèmes en maths, en écrivant des textes, on apprenant la musique (ou un autre art). Ne font-ils pas tout ça déjà à l'école ??? (sarcasme.).»

Pour comprendre la puissance pédagogique de la programmation, je vous livre ce petit exemple.

a = a + 1

En maths, cette expression ne fait pas de sens car cela revient à dire que 0=1. Cependant, en programmation, le signe «=» signifie : on assigne la valeur de droite à la variable de gauche.

Par exemple, si dans le programme, on a précedemment attribué la valeur 10 à «a» l'expression a = a + 1 signifie : «On assigne a a la valeur 10 + 1.» Et la variable a prendra désormais la valeur 11.

L'intérêt pédagogique ici est remarquable. En effet, on indique aux élèves qu'un même signe PEUT SIGNIFIER plusieurs choses. Tout dépend du contexte. Et c'est là la beauté du langage... de tous les langages. Par exemple, entendez dans votre tête :«J'ai vu un arbre tomb(é)(er).» Selon le contexte, il faudra mettre soit tombé, soit tomber. Sans ce contexte, cette phrase est du «n'importe quoi.»

Revenons au maths. Voyez par exemple l'expression : 6 - 7. La réponse est évidemment -1. FAUX. L'élève doit apprendre à demander d'abord le CONTEXTE dans lequel cette expression se trouve. Si le contexte est celui des nombres naturels, la réponse n'existe pas. Si le contexte est celui des entiers relatifs, alors oui, la réponse est -1. La reconnaissance du contexte est PRIMORDIALE. Pourtant, souvent, elle est complètement évacuée de l'enseignement.

Je pense que, malheureusement, plusieurs enseignants répliqueront que «ça va mêler les enfants.» Moi, je pense tout le contraire.

Un peu plus tard dans la journée, j'ai ajouté le commentaire suivant :

Imaginons le programme suivant :

A est un nombre naturel //On définit la variable A comme étant un naturel;
B est un entier // On définit la variable B comme un nombre entier;
A = 3 // On assigne 3 à A.
B = 3 // On assigne 3 à B.
C = A + B // On assigne la somme de A et de B à C
D = B + A // On assigne la somme de B et de A à D.


Ma question : que contiennent les variables C et D ?

Pour y répondre, revenons à vos connaissances mathématiques. (Je m'adresse ici à des adultes pédagogues.)

3 comme nombre naturel représente abstraitement la caractéristique commune de tous les ensembles qui contiennent trois éléments ; des ensembles de 3 crayons, 3 oranges, 3 éléphants, 3 hommes, etc. 3 comme nombre entier et qu'on doit écrire, pour être rigoureux en maths (+3), représente abstraitement la possibilité d'avoir son opposé (-3). Par exemple, +3 peut représenter 3 cm vers la droite, auquel cas -3 serait 3 cm vers la gauche. +3 peut être monter de 3 étages (-3: descendre de trois étages), +3 peut être 3 degrés au-dessus de 0 (-3 serait 3 degrés sous zéros) etc. Donc, que vaut 3 + (+3) ? Embêtant, n'est-ce pas ? Car, il faut bien s'en rendre compte, on additionne deux valeurs de NATURES DIFFÉRENTES. Dans la plupart des classes de maths, j'entends l'enseignant dire «Bof ! ne vous en faites pas mes enfant, dans (+3), vous n'avez qu'à enlever le + car (+3) et 3, c'est la même chose. Vous pouvez même scrapper les parenthèses qui ne servent à rien...» Je suis vraiment désolé, mais ce prof a tout faux. Et je comprends fort bien que les enfants qui se font donner cette «explication» finissent par penser que les maths, c'est de la magie et qu'on peut faire disparaître les choses au bon plaisir du prof. 3 NATUREL et 3 ENTIER, ne représentent pas la même réalité. C'est comme si on demandait d'additionner (3 éléphants) et (monter de 3 étages.)

Pour répondre à la question ci-haut, que fera l'ordinateur? Tout dépend. Certains langages de programmation arrêteront tout simplement à la ligne C = A + B en disant qu'il y a erreur car il ne peut additionner deux nombres qui ne sont pas de la même nature. D'autres langages grincheront un peu des dents et «transformeront» la seconde variable dans la nature de la première. Ceci risque cependant de causer des problèmes dans les lignes suivantes si, par exemple, le programmeur tient toujours pour acquis que la seconde variable est telle qu'il l'a définie au début du programme.

Toujours est-il que cet exemple montre encore toute l'importance du CONTEXTE. Ce contexte est là pour éviter les entourloupettes inexplicables et magiques.

Voilà encore comment la programmation même très simple amène la discussion d'idées très puissantes.