Je ne vois que deux moyens d’évaluer des élèves de Terminale en algorithmique : soit un TP, soit par écrit. Dans ce dernier cas il faudra qu’ils mettent sur leur copie, ou bien des organigrammes (testés il y a quelques années en collège pas avec un succès monstrueux...) ou bien des « scripts ». Alors la nature des probables prochains sujets de bac incite à choisir un langage qui soit plus ou moins le même pour tous les élèves de Terminale ; et donc dès maintenant pour tous les élèves de Seconde, à moins qu’on veuille changer de langage de programmation au cours de la scolarité en lycée...
En suivant les liens de l’article sur Scratch , on tombe notamment sur un séminaire des interlocuteurs TICE de janvier 2009 , et on y voit les recommandations suivantes :
Il serait judicieux d’utiliser un même langage dans un établissement
(pour faciliter les échanges entre enseignants et l’apprentissage des
élèves d’une année sur l’autre), voire dans une même académie (pour les
formations).Il convient également de choisir un logiciel multiplateforme ayant une
interface simple avec une aide intégrée, un débogage explicite, dont le
langage fait la distinction entre l’affectation et l’égalité, ayant la
possibilité d’avoir du calcul symbolique et pouvant être installé
librement par les élèves chez eux afin qu’ils puissent éventuellement
poursuivre le travail amorcé en classe.
Outre le fait qu’il ressemble à une description de xcas (suis-je
parano ?) je suis d’accord avec ce texte :
- Le système de développement doit être multiplateforme, car même si un
seul élève d’une classe n’a pas Windows, il est intolérable de le lui
imposer (constatons en passant qu’on n’imagine même plus la possibilité
qu’un lycéen n’ait pas d’ordi du tout...). - Le système de développement doit être libre ou tout au moins gratuit,
car on ne veut pas en imposer l’achat à nos élèves ni d’ailleurs à
nous-mêmes. L’EN ayant considérablement enrichi Borland (turbo-pascal)
puis Microsoft et Texas Instruments, on est en droit d’estimer que ça
suffit. - Que le langage distingue les deux sens du « = » (test ou affectation) me
semble moins indispensable mais j’adhère au moins à la recommandation.
En plus je pense, à l’usage, que le « typage dynamique » est un confort
qui peut donner de mauvaises habitudes (java par exemple impose que
toute variable soit déclarée au début, et qu’on précise si elle est
entière ou réelle par exemple). - Le document cité ci-dessus date de janvier, ils ne connaissaient pas
les projets de Seconde, que je cite :
(les élèves doivent être capables)
• de programmer un calcul itératif, le nombre d’itérations étant donné ;
• de programmer une instruction conditionnelle, un calcul itératif, avec
une fin de boucle conditionnelle.
D’où un impératif supplémentaire sur le langage choisi : IL DOIT
PERMETTRE DE FAIRE DU « WHILE » OU DU « UNTIL ».
Voilà qui décante sec : Ainsi ni les langages de l’IA ni execalgo ne
passent le portique ! (pour l’IA, je suis heureux que xlogo soit une exception, son concepteur ayant eu du nez, ou peut-être tout simplement du talent). Même Maxima est exclu...
- Pour les possibilités de calcul formel, j’interprète par "ce sera
nécessaire pour le futur bac S donc autant choisir ça en Seconde", mais
je pense que c’est moins indispensable que le reste, d’autant plus que
plus bas on lit une autre recommandation, sur la géométrie, qui n’est
pas trop compatible avec le calcul formel (sauf à accepter xcas, nous y
revoilà). - Pour l’aide intégrée je ne suis pas d’accord, personnellement je
développe mieux avec les différents wikis disponibles un peu partout
qu’avec ladite aide intégrée. Par contre toujours à l’usage, je découvre
la force que représentent ces petits riens que sont la coloration
syntaxique (voir les entiers en rouge et les réels en vert, ça aide
vraiment), la complétion automatique (exemple connu : GeoGebra) et
surtout le débogage : exemples particulièrement flagrants : Euler Math
Toolbox et BlueJay (pour programmer en java).
Que reste-t-il alors ? J’exclus d’office et quelque peu arbitrairement les outils suivants :
- Pascal, Prolog, yacas et metapost (passés de mode).
- Les langages compilés (pas le temps en seconde, et imposent plus ou
moins Linux, ce qui d’ailleurs ne me déplairait pas). - xcas (mes élèves m’ont expliqué ce qu’on ressent lorsque le logiciel
plante 10 minutes avant la fin de l’heure, et qu’on est obligé de tout
refaire...) [1]. - Ensuite Basic et autres ne faisant pas la différence entre égalité et
affectation sont exclus eux aussi. - Execalgo n’est pas multiplateforme, donc si l’EN veut en faire le choix
il faudrait que quelqu’un se dévoue pour le recompiler sur Mac et sur
Linux, et en profite pour l’enrichir un peu, notamment pour le
graphisme... Hélas pour moi, Euler Math Toolbox est éliminé pour la même
raison (seulement Windows). Dommage car il a de formidables exemples
qu’on peut d’ailleurs consulter sur le site.
Il reste alors Javascript, ruby, lua (ces deux derniers ayant un
évaluateur en ligne qui évite d’avoir à les installer : C’est du
ultramultiplateforme !), SciLab, xlogo, gp, tcl/tk (mais je le trouve un
peu complexe), Asymptote, POV (mais lui c’est le « for...to » qu’il n’a
pas), Scratch et la TI 82-Stats de mes futurs élèves. Si je n’ai pas oublié
un autre superlangage ça se décante vraiment.
Une parenthèse sur GP : aux USA, jusqu’à une date récente, les cours
pointus d’algorithmique étaient souvent faits en GP, considéré comme un
excellent langage ; je vois ce
cours d’algorithmique,
mais aussi ce
logiciel nécessitant du calcul en haute précision, sur la théorie des nœuds.
De plus, dans mon comparatif ci-joint, GP est le langage qui donne le
programme le plus court, ce qui tend à le favoriser. Mais :
- Il n’a pas bougé depuis plus d’un an.
- Pour le calcul formel il est super mais pour le graphisme, moins.
- Y a-t-il une version Mac ?
Finalement après toutes ces élucubrations en tout genre voici mon choix :
je n’ai rien contre LOGO bien au contraire, ni contre la TI, mais :
- Javascript est utilisé dans les sites internet et ne risque donc pas
trop de disparaître comme Pascal ou Basic. - Le fait qu’il soit rigoureux et en anglais empêche les risques de
confusion chez les élèves qui finissent par croire qu’un langage de
programmation est une langue naturelle, ce qu’il n’est pas. - La possibilité qu’a GeoGebra de communiquer avec Javascript, comme ceci lui rend accessible le fameux calcul formel, et même un tableur...
- Javascript va bientôt posséder un éditeur qui simplifie nettement la
programmation, je peux en témoigner pour l’avoir pas mal testé ; on peut
se faire une idée en regardant la version « webstart » de CaRMetal
(cliquer sur « lancement java webstart... »).
Pour résumer :- On choisit les instructions dans un menu partiellement graphique au
lieu d’avoir à les taper. - Les boucles par exemple apparaissent alors avec des exemples tout faits.
- En cas d’erreur de syntaxe, l’exécution s’arrête avec un message
d’erreur en anglais mais le curseur va là où ça s’est arrêté. J’insiste
sur l’utilité des messages d’erreur qui sont suffisamment complets. - Un bouton permet de réinitialiser tout (pratique en cas d’erreur).
- Les instructions graphiques : C’est CaRMetal !
- L’exécution est suffisamment lente (et on peut encore la ralentir) pour
que les élèves voient ce qui se passe.
- On choisit les instructions dans un menu partiellement graphique au
- La mode fait que des tutoriels Javascript, on en trouve partout en ce
moment, il y en a même en français pour les allergiques à la langue de
Donald Knuth, auteur de la bible sur l’algorithmique, et accessoirement de TeX. - À l’usage toujours, j’ai trouvé la mise au point sous Javascript
encore plus rapide qu’avec GP ou LOGO, c’est dire !
Ce choix des « CarScripts » est le fruit d’une réflexion de plusieurs semaines menée sous la forme d’une sorte de banc d’essai dont le fruit est un document téléchargeable ci-dessous au format pdf. Bonne lecture !
Une remarque finale sur les exercices consistant à donner un algorithme et demander aux élèves de deviner ce qu’il fait (pas facile du tout d’ailleurs) : une partie de la science algorithmique porte sur une logique spécialement développée pour ça, appelée calcul de Hoare et dont les versions modernes utilisent la théorie des types. Il existe dans le monde du libre, des outils de développement intéressants quoique difficiles (disons plus intéressants pour les profs que pour les élèves), parmi lesquels
Commentaires