Photo : Vim + NERDTree + Taglist par moleculea
J’ai participé samedi dernier à une conversation sur Twitter sur la question de l’utilité d’apprendre à coder au collège ou au lycée :
J’ai un peu de mal à comprendre les bienfaits de l’#apprentissage du #code au #collège ou au #lycée… Si qq. veut m’éclairer ! #numérique
— Bruno Vergnes (@bvergnes) April 19, 2014
On peut distinguer deux grands pôles dans les débats sur ce sujet :
- Le pôle « pratiques » selon lequel il suffit d’apprendre aux élèves à utiliser le numérique sans leur demander d’entrer dans la technique informatique sous-jacente.
- Le pôle « techniques » qui considère que pour bien utiliser le numérique il faut savoir comment il fonctionne et donc apprendre à programmer.
Étrangement, il semble qu’il y ait peu de positions intermédiaires entre ces deux pôles. A priori et depuis longtemps, je suis plutôt du côté des « pratiques » : je ne connais rien au fonctionnement de ma voiture et ça ne m’empêche pas de faire 50000 km par an. Toutefois, avec le temps, j’en suis venu à nuancer cette position et à me dire qu’un apprentissage de certaines notions d’informatique serait utile.
Voici donc quelques réflexions à ce sujet (en plus de 140 caractères 😉 ) sur lesquelles je vous invite à réagir (en commentaires ici même par exemple, ou sur Twitter).
Questions de vocabulaire
Mes lecteurs fidèles savent que j’aime bien préciser le vocabulaire avant de discuter une question. C’est souvent un préalable indispensable sur ce qui touche au numérique où les buzzwords et les petits-mots-pour-avoir-l’air-savant-ou-à-la-mode-ou-les-deux-en-même-temps sont souvent très répandus, sans que personne ne comprenne vraiment ce qu’ils signifient (précisément parce qu’ils n’ont pas le même sens pour tout le monde).
Il faut donc s’entendre sur ce qu’on appelle ‘coder’. Dès ce point, un problème va se poser : classiquement, le verbe ‘coder’ (qui provient de l’anglais ‘to code’), pour le sens qui nous intéresse, signifie écrire du code informatique, c’est-à-dire du code exécutable. Il est un synonyme de programmer, c’est-à-dire ‘produire un programme informatique’. Ainsi, coder, c’est écrire dans des langages de programmation, comme C, C++, Java, Python, Ruby, Lisp, Cobol, Basic, Javascript, PHP… (et beaucoup d’autres) pour fournir des instructions à un ordinateur : « affiche une fenêtre », « écris telle phrase à l’écran », « fais tel calcul », « trouve telle information dans tel fichier » etc.
Par un glissement de sens subtil, ce verbe en est venu à signifier « écrire des choses incompréhensibles pour le commun des mortels mais qui fait sens pour un ordinateur ». C’est ainsi qu’on en arrive à parler de coder pour « écrire du HTML ». Le HTML n’est pas un langage de programmation, mais un langage de description de page. Il ne permet pas de dire à l’ordinateur de faire un calcul, par exemple, il se contente de lui dire que tel mot doit apparaître dans telle couleur, à telle position, dans telle taille de caractères. En fait, j’aurai l’occasion de parler plus tard de ces questions.
Si je me permets cette (trop) longue digression sur les sens du mot ‘coder’, ceux qu’il a réellement et ceux qu’on lui attribue un peu trop généreusement, c’est que, je crois, par une sorte d’admirable mise en abyme, la question de « pourquoi apprendre à coder » se trouve posée dans cette expression même. Il me semble en effet que si nous avions tous une expérience plus concrète de ce qu’est l’informatique, ces glissements de sens n’existeraient pas, non plus que les incroyables dialogues de sourds auxquels ils donnent parfois lieu. J’y reviendrai.
Deux autres définitions pourront être utiles. Comme je suis épuisé par la première (et que, je l’avoue, j’ai peur de lasser mes lecteurs avec mes définitions approximatives), je vais emprunter celles-là à l’Académie des Sciences (avouez qu’entre une de mes définitions et une autre écrite par des académiciens, vous ne perdez pas au change) :
- Le mot « informatique » désignera spécifiquement la science et la technique du traitement de l’information, et, par extension, l’industrie directement dédiée à ces sujets.
- L’adjectif « numérique » peut être accolé à toute activité fondée sur la numérisation et le traitement de l’information : photographie numérique, son numérique, édition numérique, sciences numériques, art numérique, etc.
On parle ainsi de « monde numérique » pour exprimer le passage d’un nombre toujours croissant d’activités à la numérisation de l’information et « d’économie numérique » pour toutes les activités économiques liées au monde numérique, le raccourci « le numérique » rassemblant toutes les activités auxquelles on peut accoler l’adjectif numérique. Puisque toute information numérisée ne peut être traitée que grâce à l’informatique, l’informatique est le moteur conceptuel et technique du monde numérique.
Les deux pôles du débat
Comme je le disais plus haut, il me semble que sur cette question on peut distinguer deux pôles. Deux textes me semblent emblématiques de chacun de ces deux pôles :
- Pour le pôle « techniques », le rapport publié par l’Académie des sciences en mai 2013 intitulé L’enseignement de l’informatique en France. Il est urgent de ne plus attendre
- Pour le pôle « pratiques », un article de Michel Guillou : Apprendre à exercer sa liberté d’expression ou apprendre à coder ?
Le pôle « technique » : rapport de l’Académie des sciences
Les auteurs du rapport partent du constat suivant :
- Le développement du numérique est intimement lié aux progrès de l’informatique, qui est devenue une science autonome avec ses formes de pensée spécifiques. Si les objets et applications numériques évoluent à allure soutenue, la science informatique reste fondée sur un ensemble stable et homogène de concepts et de savoirs.
- Nombre des progrès technologiques les plus marquantes de ces dernières années sont des produits directs de l’informatique : moteurs de recherche et traitement de très grandes masses de données, réseaux à très large échelle, informatique sûre embarquée dans les objets, etc.
- De par l’universalité de son objet, la science informatique interagit de façon étroite avec pratiquement toutes les autres sciences. Elle ne sert plus seulement d’auxiliaire de calcul, mais apporte des façons de penser nouvelles.
Ils estiment donc nécessaire d’enseigner la science informatique dès l’école primaire, en proposant une progression jusqu’au lycée (et même au-delà):
- La sensibilisation, principalement au primaire, qui peut se faire de façon complémentaire en utilisant des ordinateurs ou de façon « débranchée » ; un matériau didactique abondant et de qualité est d’ores et déjà disponible.
- L’acquisition de l’autonomie, qui doit commencer au collège et approfondir la structuration de données et l’algorithmique. Une initiation à la programmation est un point de passage obligé d’activités créatrices, et donc d’autonomie.
- Le perfectionnement, qui doit se faire principalement au lycée, avec un approfondissement accru des notions de base et des expérimentations les plus variées possibles.
Cet enseignement passe la création d’une nouvelle discipline, qui doit être enseignée à tous les jeunes, en adaptant les exercices et les objectifs au niveau d’enseignement et (au lycée) aux options et aux filières choisies. Le rapport prévoit aussi la formation des enseignants qui seraient amenés à enseigner cette nouvelle matière : formation des enseignants de premier degré pour qu’ils puissent enseigner cette matière comme ils enseignent déjà les autres, création de concours CAPES/Agrégation pour former les nouveaux enseignants d’informatique du secondaire.
Les finalités de cet enseignement sont les suivantes (p. 13 sq.):
– « Former les professionnel-le-s de tous les métiers » : puisque de plus en plus de métiers utilisent l’informatique ou ont à traiter de questions qui sont liées à ce domaine, les professionnels qui les pratiquent doivent pouvoir le comprendre d’une façon satisfaisante. Un exemple est particulièrement éclairant à cet égard :
Par exemple, les juristes sont de plus en plus souvent amenés à écrire et appliquer des lois qui concernent des questions liées à l’informatique. L’expérience récente montre que leur difficulté à comprendre et suivre le sujet mène à des retards permanents dans l’action, voire à des contresens, comme on en a vus sur questions d’identification, de vote électronique ou de protection de la vie privée : croyance répandue mais erronée qu’une adresse IP (dans sa version 4 actuelle) identifie un ordinateur, confiance a priori dans le vote électronique certainement pas partagée par les spécialistes de la sécurité informatique, etc. »
– « L’alphabétisation numérique pour tous » : les auteurs insistent, à juste titre à mon avis, sur le fait que la fracture numérique n’est pas tant entre ceux qui sont équipés de matériel informatique et ceux qui n’en sont pas équipés qu’entre ceux qui savent s’en servir efficacement et ceux qui ne savent pas. Le numérique est porteur de beaucoup de promesses pour améliorer la société : plus de transparence, plus grande liberté d’expression, accès facilité à l’information et à l’éducation etc. mais aussi de certaines menaces. Il importe que les citoyens puissent à la fois tirer profit de ces avantages et contrôler le développement du numérique dans la société. Pour cela il est nécessaire de les former à mieux comprendre ces questions par une éducation à l’informatique.
(Je passe sur la finalité suivante « Réduire les fractures numériques de genre et de catégorie sociale » qui n’est pas autre chose, à mon avis, qu’une petite glose politiquement correcte pour faire bonne mesure, puisque rien d’autre de sérieux n’est dit à ce sujet dans le rapport).
Ce sur quoi le rapport insiste à plusieurs reprises, c’est sur la nécessité d’apprendre aux élèves des concepts et non des procédures : « Il faut donc systématiquement rechercher l’enseignement des fondements et des concepts, au lieu de former les élèves aux détails d’outils vite périmés, faute de quoi les élèves se périmeront aussi vite que les objets enseignés » (p.17).
Le pôle « pratiques » : article de Michel Guillou « Apprendre à exercer sa liberté d’expression ou apprendre à coder »
(NB : je choisis cet article parce qu’il me semble assez caractéristique de ce que j’ai appelé le pôle « pratiques », même si je dois à la vérité de préciser qu’il ne résume pas toute le pensée de Michel Guillou sur ce sujet. En somme, je le prends comme exemple d’une position sur la question dont je parle, non comme exemple des réflexions de son auteur, par ailleurs plus subtiles et plus complexes que cela.)
Michel Guillou considère cette proposition de créer une nouvelle matière d’enseignement « pitoyable et dérisoire » et estime que les arguments avancés sont fallacieux :
Je cite Benoît Thieulin, président du CNN qui s’est maladroitement engouffré dans l’espace ouvert par l’EPI, les informaticiens de l’Académie des Sciences et la Société informatique de France, qui disait dans L’Express : « Une nouvelle culture numérique émerge pour laquelle les gens ne sont pas formés. Il faut donc enseigner un minimum de culture générale dans ce domaine dès le primaire. Tout le monde doit savoir ce qu’est un logiciel et comment il est conçu, par des couches de codes de langages informatiques ». Vous l’avez compris, c’est le syllogisme habituel : une nouvelle culture numérique est nécessaire, l’informatique en est le cœur donc il faut enseigner l’informatique et le code !
Il récuse ensuite l’idée que l’informatique soit absente des enseignements actuels :
Quant à l’idée que l’informatique serait absente des enseignements d’aujourd’hui, c’est une idée fausse bien sûr. La maîtrise des techniques usuelles de l’information et de la communication fait partie de la quatrième compétence exigible pour le socle commun et pour le B2i, aussi imparfait soit-il, les items de laquelle compétence pouvant être validés dans n’importe quelle discipline, des mathématiques à la technologie en passant par la documentation, souvent pionnière en la matière. Par ailleurs, et s’il faut absolument parler des programmes disciplinaires, faut-il rappeler qu’il existe déjà un enseignement optionnel de l’informatique et des sciences du numérique qui devrait être proposé bientôt, si on trouve les professeurs pour les encadrer, à toutes les classes de terminale ? Faut-il rappeler aussi que les programmes de technologie, au premier degré comme dans les collèges, contiennent de très nombreuses références à l’enseignement de l’informatique, dont la compréhension du code ?
Je dois avouer que cette partie de l’article me rend un peu perplexe : en ce qui concerne l’enseignement optionnel de l’informatique et des sciences du numérique, précisément, il est optionnel et ne peut donc pas être considéré comme susceptible de fournir une culture générale de base sur l’informatique. Dans le programme de technologie, je ne vois pas les « très nombreuses références à l’enseignement de l’informatique, dont la compréhension du code ». Je vois quelques références à l’informatique, qui me semble plutôt vue selon une perspective très technique et procédurale, je vois aussi que la seule mention du code est négative : « La programmation d’un support automatique ne demande pas l’écriture de lignes de code. » (Programmes de l’enseignement de technologie, Bulletin officiel de l’Education nationale spécial n° 6 du 28 août 2008, p. 22)
Sur la question du socle commun et du B2i, je n’ai aucun doute ; ce passage est de toute évidence une facétie de Michel Guillou, qui écrivait naguère au sujet du B2i, qu’il qualifiait d' »échec monumental » :
Au moment où il convient maintenant, compte tenu de l’urgence, d’enseigner le numérique et de prendre à ce sujet des décisions, la seule chose sensée à faire est d’annoncer la suppression de ce machin, par ailleurs particulièrement mal nommé.
Définitive, la suppression, de préférence..
Comme de décider de la suppression de la compétence 4 dont les items intègrent aisément l’ensemble des autres compétences, comme j’ai déjà eu l’occasion de le démontrer. Pour y revenir et n’évoquer, par exemple, que les compétences 6 et 7, comment travailler sur « les droits et les devoirs du citoyen » ou « les notions de responsabilité et de liberté et le lien qui existe entre elles » hors de toute référence au numérique qui imprègne les pratiques ordinaires de ces jeunes citoyens ?
Il sait très bien, comme tout le monde, que les items du B2i sont très peu enseignés, en particulier les plus « théoriques », qui sont ceux qui nous intéressent en ce moment.
Mais cela n’est pas l’essentiel de cet article. Le cœur du propos de son auteur est de dire que la vraie priorité pour maîtriser le numérique, plutôt qu’une éducation à l’informatique, est d’apprendre à exercer sa liberté d’expression par le numérique, à publier : « Je suis donc persuadé que l’exercice de ce droit s’apprend, dans le cadre d’une éducation aux médias rénovée, et doit faire partie des nouvelles compétences auxquelles il faut former le jeune citoyen ».
Deux positions irréconciliables ?
On le voit, ces deux pôles correspondent à deux positions très tranchées : création d’une discipline supplémentaire « informatique » comprenant l’apprentissage du code dans un cas, éducation aux médias rénovée dispensée de façon pluridisciplinaire dans l’autre cas.
Il semble difficile de mettre d’accord les tenants de ces deux positions. Pourtant, il faut reconnaître que les deux textes se proposent des objectifs communs : dans les deux cas, il s’agit de former des citoyens conscients, capables de faire des choix éclairés et d’exercer leur liberté d’expression.
Ils ont aussi, me semble-t-il, un autre point commun (et j’espère que ni les uns ni les autres ne prendront ombrage de cette remarque) : une rhétorique prédéterminée par certaines conceptions préalables.
Le vice logique du rapport de l’Académie des sciences est dans une certaine mesure mis en lumière par Michel Guillou dans la citation que j’ai faite plus haut : le numérique induit un changement du monde dans lequel nous vivons, la science informatique est à la base du numérique, donc il faut apprendre la science informatique et la programmation. Si on peut suivre le raisonnement jusqu’à apprendre la science informatique (c’est-à-dire une théorie du traitement de l’information), on ne voit pas très bien pourquoi la technique informatique (le code) arrive ici. C’est ce que j’appellerais la « logique du blop » : un élément arrive dans le discours par la seule raison de sa contiguïté avec un autre qui a été amené logiquement (il apparaît comme une bulle qui éclate sans qu’on s’y attende à la surface du porridge, en faisant « blop »).
Quant au raisonnement de Michel Guillou, je le qualifierais de « logique gaullienne » : le numérique pose des questions sur la société auxquelles il appartient au citoyen de répondre, il faut donc une éducation à la citoyenneté, les questions techniques étant des détails. Par conséquent, je forme un citoyen et l’intendance (numérique) suivra (d’où le nom de cette logique 😉 ). Je crois que depuis la création du B2I en 2000, l’intendance n’a pas toujours suivi comme on l’aurait voulu…
[A suivre… Dans un prochain billet, je dirai ce que je pense de l’enseignement de l’informatique]
23 avril 2014 at 16 h 42 min
Benoît, j’avais promis une réponse qui demande réflexion et recul. Je ferai ça dès que possible.
En attendant, un premier élément de réponse : http://www.internetactu.net/2014/04/23/enseigner-le-code-a-lecole-vraiment/ qui vient d’ailleurs mais pas de nulle part…
29 avril 2014 at 1 h 45 min
Comme promis, Benoît, quelques éléments de commentaire à http://www.culture-numerique.fr/?p=634
Bien à toi.