Il y a quelques temps j’ai exposé ici mon choix de langage de programmation pour l’enseignement à des débutants en informatique, et quelques critères de choix pour un tel enseignement. J’en ai repris les idées pour un article publié sur le site de l’association Enseignement public et informatique.
Jacques Lucy, professeur de mathématiques dans les années 1970, a découvert l’informatique lors d’un stage dans une filiale de l’Institut Français du Pétrole, après quoi il a soutenu une maîtrise d’informatique, puis introduit l’enseignement de l’informatique dans son lycée de Rueil-Malmaison. Vous trouverez ci-dessous ses objections à mes arguments, suivis de ma réponse. Il n’est que temps de lancer un large débat sur l’enseignement de l’informatique dans l’enseignement secondaire !
Le texte de Jacques Lucy
Je me permets de vous écrire à propos de votre article de la revue de l’association EPI concernant le choix d’un langage de programmation suite au développement d’un enseignement d’informatique dans l’enseignement secondaire.
Je crois bien comprendre les critères que vous mettez en avant, mais je suis surpris de votre conclusion proposant d’utiliser Pascal (sans doute Turbo Pascal) ou Scheme (un des héritiers de Lisp)
– Ma première réaction a été de constater la différence avec le choix fait par les classes préparatoires aux grandes écoles qui avaient d’abord retenu Pascal, puis Caml pour privilégier maintenant Python. Les démarches sont-elles opposées et si oui pourquoi ?
– Ma deuxième réaction a été de relire l’ouvrage Informatique et science du numérique certes plus modeste pour ce qui concerne la dimension langage de programmation, mais qui a le mérite de « mettre les mains dans le cambouis » pour s’adresser à large public qu’il faut essayer de convaincre.
– Ma troisième réaction a été d’aller voir sur internet ce qui se disait sur le thème « choisir un langage de programmation pour débuter ». Naturellement, je me méfie des choix exprimés par des personnes convaincues de détenir LA vérité, mais cela n’interdit pas d’écouter leurs arguments, lesquels ne prennent pas en compte seulement les qualités intrinsèques du langage examiné, mais aussi de sa disponibilité, de la quantité et qualité des informations dans son environnement etc.
Une des questions que je me pose est « quels compromis peut-on (ou doit-on ?) faire pour maximiser les chances de réussite sans renoncer aux objectifs essentiels ? »
Je reconnais tout à fait l’importance des questions de sécurité, de sûreté pour réaliser des programmes fiables, mais jusqu’où aller et quel prix à payer ? Si de plus en plus de gens se mettent à programmer, on ne peut s’attendre à 100 % de productions parfaites. Cette population ne choisira pas des outils trop confidentiels.
Réponse de L. Bloch
Aucun langage de programmation ne saurait répondre à toutes les exigences. Turbo Pascal offrait à l’élève un environnement intégré très facile d’accès, une syntaxe moins limitée que celle de N. Wirth, ce qui permettait des progrès et des résultats rapides. Malheureusement c’est un objet du passé, et d’ailleurs je n’ignore pas que le réquisitoire de Brian W. Kernighan frappe souvent juste, même si Turbo Pascal corrige certaines erreurs de Niklaus Wirth.
Caml et son successeur OCaml sont de fort beaux langages de programmation, quand même très imprégnés d’une démarche mathématique, que je craindrais de proposer à mes auditeurs biologistes du Cnam. Ce que je retiens de mes expériences (depuis 1972), c’est que la manie française de limiter l’apprentissage de l’informatique aux matheux est une aberration, dont nous allons peut-être enfin nous débarrasser.
Quant à Python, je crois que Gérard Berry a tout dit : ce langage met au rancard cinquante années de recherche en langages de programmation (comme ses acolytes Perl, JavaScript et PHP). En outre, un langage interprété que l’on ne peut pas compiler manifeste par là certaines faiblesses que j’ai tenté d’exposer ici et là, et qui sont autant d’inconvénients pédagogiques. J’ai aussi écrit ce que je pensais du langage C.
Bien sûr je préférerais que Scheme soit plus répandu et utilisé, que son système de modules soit normalisé, mais il est accessible aux élèves, et tout ceux qui sont passés par lui conviennent que cette expérience a amélioré leur style de programmation, y compris en d’autres langages.
Et après tout, l’essentiel n’est-il pas d’apprendre à programmer, plutôt que d’apprendre tel ou tel langage, puisque de toute façon il faudra en apprendre plusieurs ?