Enseigner Python ou enseigner la programmation?

Une question pour les formateurs et profs qui passent par là.

Récemment, on m’a demandé sur Mastodon:

Faut-il enseigner Python aux débutant en évitant les sujets trop spécifiques à celui-ci, de façon à transmettre des connaissances sur la programmation qui soient indépendantes du langage utilisé?

Ma réponse : un grand “non”. Pour moi, la seule façon de progresser sur la programmation en générale, c’est de suivre l’enseignement de Python par un autre langage (genre Javascript, Java, C, ou même Rust, soyons fous) - et je ne me prive pas d’aborder des sujets ultra-spécifiques à Python dans mes formations aux débutants.

Apparemment, ce n’est pas une posture très courante, du coup je suis curieux de savoir ce que vous en pensez.

PS: Fil de discussion sur Mastodon (en anglais) .

Je pense que c’est uniquement le titre du cours qui change :

  • En cours de Python on enseigne Python.
  • En cours de programmation on peut utiliser Python comme support.

En fonction des besoins des gens ils peuvent choisir un cours ou l’autre, il n’y a donc peut-être pas de réponse à sa question : ça dépend peut-être uniquement de l’objectif du public.

Pour quelqu’un qui veut juste apprendre Python, comme un “outil de plus” (pour scripter dans un logiciel de 3D par exemple) : apprenons-lui Python avec ses spécificités.

Pour quelqu’un qui veut apprendre à programmer, utilisons Python comme support au début et comme tu dis : qu’il voyage un peu ! Je dirais même : jusqu’à Clojure, Erlang, R, Haskell, et une pointe de Prolog. Ça décrasse les neurones et ça ouvre les yeux.

Pour finir je pense qu’utiliser Python en ne prenant vraiment que les « concepts indépendants du langage » n’est pas réalisable, Python a trop de spécificités (ne serait-ce que ses variables) qui vont le pincer très fort si on lui a caché. C’est peut-être tenable, mais vraiment pas longtemps, j’avoue ne jamais avoir essayé.

Sur un sujet proche j’utilise la syntaxe Python en cours d’algo, souvent en précisant que ce n’est pas du Python, j’y met des null ou des ø au lieu des None, des minuscules à True et False, j’oublie les : régulièrement, … C’est du pseudo-code avec une syntaxe qu’ils connaissent très bien disons, et là on essaye d’oublier les spécificités du langage, mais c’est un public qui connaît très bien Python et je pense que si on le faisait en Python ça ne changerai franchement pas grand chose. Je le fais juste parce que je suis aussi leur prof de Python, et que je ressens le besoin de désambiguer que ce que je dis en cours d’algo est vrai dans les autres langages.

1 « J'aime »

Oh merci pour ta réponse, j’avais pas vu les choses comme ça :slight_smile: