A propos du choix du langage de programmation
A propos du choix du langage de programmation
« Quel[s] langage[s] les profs vont utiliser pour les TP de programmation ? » voilà peut-être la première et la plus fréquente question que nous nous posons y compris sur notre forum et c'est un sujet qui peut alimenter de longs débats (à juste titre).
Paradoxalement, il y une réponse assez simple à cette question:
« Nous devons rester "agnostiques" et choisir un langage standard et ouvert, bien supporté et avec une base impérative »:
- Choisir un langage avec une base impérative, c'est à dire avec les ingrédients usuels des algorithmes (séquence d'instruction, instruction conditionnelle, affectation de variables et boucles).
- Choisir un langage standard, ouvert et bien supporté (ex: Java ou Python probablement JavaScript à l'avenir) quitte à utiliser une version simplifiée de ce langage pour démarrer.
- Donner aux élèves quelque chose qui pourra leur servir par la suite (études, univers professionnels, loisirs, etc.).
Un autre point clé est Avec quel-le logiciel/plateforme travailler ?: Au delà du langage c'est bien évidemment le choix de l'outil qui permet de l'utiliser qui fait levier. Tandis que Python vient avec son utilitaire de développement et que Java'sCool permet de programmer en Java, la plateforme IOI est un bel exemple d'agnosticisme (mais nécessite de tout faire en ligne). Le confort, cela compte énormément !
Que faut-il éviter alors au niveau de l'ISN ?
- Les langages non impératifs, par exemple les langages fonctionnels, qui correspondent à des abstractions vraiment fondamentales, mais scientifiquement différentes des fondements algorithmiques qui sont à faire partager
- D'autres outils logiciels (calculateurs symboliques, calculettes programmables, environnement graphiques de programmation, etc.) qui certes permettent de programmer et d'apprendre à programmer mais
- comportent des bizarreries (ex: la sémantique de l'affectation n'est pas la même dans un calculateur symbolique puisqu'il a d'autres fins; une affectation du genre x:=x+1 produit des effets assez étranges suivant le contexte, ce qui est un obstacle conceptuel important pour les débutants).
- ne permettent pas de relier la notion de langage à celle de programmation (ex: dans le cas d'outil de programmation graphique, la syntaxe est "gommée" donc ne peut être appréhendée)
- Les langages "exotiques" et les "bricolages géniaux" : on va trouver sur le Web beaucoup de plateformes artisanales qui n'ont que de petites communautés d'utilisateurs et risquent de ne pas survivre, donc risquent de faire perdre beaucoup de temps.
En savoir plus:
- Premiers principes des langages de programmation, Gilles Dowek
- Algorithmique, programmation, langages catalogues de belles ressources sur le sujet.