Quel enseignement de l’informatique et du numérique ?

Voici le texte de mon intervention dans le colloque « L’enseignement philosophique et les sciences : Nouvelles perspectives » organisée par les inspections de philosophie de l’éducation nationale et l’académie des sciences le 13 novembre 2013 à Paris.


Si les gens ne se rendent pas compte d’à quel point l’informatique est simple, c’est parce qu’ils sous-estiment grandement la complexité de la vie
(détournement d’une citation de John von Neumann qui lui parlait des mathématiques)

Vous savez qu’un débat assez difficile s’est engagé sur l’introduction de nouvelles formes d’enseignement de l’informatique dans l’éducation notamment secondaire. Ce débat porte à la fois sur l’utilité d’un tel enseignement et sur la forme qu’il devrait prendre. Je vais vous proposer quelques idées issues des différentes facettes de mes activités comme informaticien, comme analyste des enjeux du numérique et comme praticien de la culture numérique.

Dans un premier temps, je voudrais vous inviter à élargir un peu le champ du débat. L’informatique est certes une discipline, mais c’est aussi une technique de la pensée si répandue et si essentielle que de nombreux philosophes et anthropologues ont estimé qu’elle constituait une mutation de l’identité humaine similaire à celle de l’apparition de l’écriture. Ainsi des travaux de Clarisse Herrenschmidt1. La prédiction d’Ada Lovelace en 18422 sur l’extension des pouvoirs humains permises par la programmation se trouve réalisée, sauf que ce n’est pas seulement la science de l’analyse qui se trouve transformée mais l’ensemble des savoirs et en fait la pensée humaine.

Parmi les développements qu’a permis l’informatique, les réseaux informationnels universels (internet pour faire bref) ont fait qu’une part significative de la socialité humaine se déroule aujourd’hui dans l’espace numérique. Les pratiques, les contenus produits et les traces laissées dans l’espace numérique sont toutes aussi réelles que celles des interactions sociales dans l’espace physique, mais elles sont évidemment d’une nature différente. L’enseignement scolaire se trouve donc face à deux défis : comme doter les élèves des capacités à la pensée en information ? Comment les équiper pour leur développement humain dans ce nouvel univers qu’ils ont investi souvent avant le système scolaire.

Anatomie de la pensée en information

La pensée informatique est avant tout pensée de la programmation, pensée du code.
Quand j’étais à Berkeley en 1982, j’ai suivi un cours d’Anthony Wassermann intitulé Programming Languages et si je suis capable de résumer 30 ans plus tard ce qu’il essayait de nous transmettre, c’était l’explication de pourquoi il y a un jungle de langages de programmation, pourquoi tous les efforts de définir un langage de programmation idéal pour tous et tous les usages seront voués à l’échec. Et ce pourquoi, tel que je le vois aujourd’hui, c’est qu’un langage de programmation, c’est un pont entre la pensée humaine consciente et le fonctionnement d’une machine qui est la couche visible de tout un empilement de machines plus ou moins concrètes. Quand on programme on « parle à cette machine », même si certains de ses composants peuvent être à l’autre bout de la planète. Comment donc peut-on y voir un peu clair sur ce que cela veut dire d’acquérir des capacités à la pensée du code ?

Gérard Huet vous présentera cet après-midi un tableau des fondements de l’informatique selon le triptyque mathématiques / logique / linguistique. Dans le champ plus spécifique de la programmation, on trouve aussi un triptyque : programmation impérative et procédurale / programmation fonctionnelle / programmation logique. Pour vous donner une idée, la programmation impérative procédurale dit « si truc fais-ci pendant que machin et sinon rien » et permet de rassembler ce type d’instructions dans des procédures que d’autres programmes peuvent appeler. La programmation fonctionnelle définit des calculs comme des successions de réécritures d’un texte qui reviennent à appliquer des fonctions à des données qui peuvent elles-mêmes être des fonctions. La programmation logique définit des des équations logiques et le calcul y prend la forme d’inférences ou de démonstrations. Ces trois modèles sont ceux de trois pères fondateurs (après la prophétesse Ada) : Alan Turing, Alonzo Church et Emil Post3.

Des trois modèles majeurs (impératif, fonctionnel et logique), le modèle impératif, celui par lequel un être humain exprime à un ordinateur ce qu’il souhaite qu’il fasse en séquençant dans le temps des actions en fonction de différentes conditions domine très largement la pratique concrète. C’est parfois une grande déception pour les mathématiciens qui reconnaissent mieux leurs billes dans les deux autres, mais il y a à cela des raisons qui tiennent précisément à la question de l’éducation.

John von Neumann a défini en 1944-1945 la structure de machine qu’on appelle aujourd’hui les ordinateurs de von Neumann. John von Neumann n’était pas exactement un béotien en mathématiques. Il avait réuni Turing, Church et Post à Princeton et dans le Journal of Symbolic Logic en 1936. Nous lui sommes particulièrement redevables de l’existence de machines concrètes capables d’appliquer des calculs à des programmes considérés comme des données. C’est ce qui rend possible l’aspect « procédural » de la programmation en permettant d’appeler une procédure avec différents paramètres. Cependant, John von Neumann a choisi de promouvoir des modèles de programmation procéduraux4 fondés sur une séparation mentale entre ce qui est programme et ce qui est donnée. Sa motivation est de créer un pont entre les mécanismes de la pensée consciente et ceux de la programmation5.

En fait, la programmation impérative rejoint l’expérience de l’enfant découvrant un outil ou une machine, celle qui nous fait observer aujourd’hui des bébés déverrouillant un smartphone et commençant à agir sur ses icônes. La programmation impérative se situe dans la continuité directe d’un apprentissage par rapport auquel la programmation fonctionnelle ou la programmation logique sont des abstractions qui se conquièrent de haute lutte. Mais attention, en permettant l’écriture du texte numérique d’un programme stockable et applicable à la demande, toute forme de programmation externalise « de la pensée » en information. La non-séparation entre programmes et données ressurgira sans cesse au tournant. Le texte d’une page Web interactive est pour partie constitué de données auxquelles le programme d’un navigateur va s’appliquer pour la visualiser et pour partie de programmes que le navigateur appellera pour permettre l’interaction.

Et l’enseignement dans tout ça ?

Comment donc l’enseignement peut-il aider l’élève à passer de l’expérience d’un séquencement opérationnel qui lui est familière à l’écriture (quelque soit sa forme) du texte d’un programme puis à la mise en place d’une architecture de traitement de l’information qui combine plusieurs programmes ? Comment plus tard lui permettre d’ apprendre à raisonner sur un traitement de l’information, même interactif, à le critiquer, à l’améliorer ? Comment enfin, probablement beaucoup plus tard, aborder la formalisation du raisonnement sur ces traitements ?

Heureusement, ce chemin peut être parcouru de bien des manières. Il ne nécessite pas d’apprendre à programmer au sens strict que cela a à l’université et dans les écoles d’ingénieur. Il peut s’effectuer dans un contexte restreint comme celui des formules de tableur. Il peut passer par la manipulation d’objets physiques informatisés ou de modèles comme ceux utilisés pour la synthèse musicale qui reposent sur un modèle de production, mixage et traitement du son. Il peut partir de l’existant et le transformer simplement étapes par étapes par exemple en modifiant une page Web avec un outil comme Firebug et en examinant l’effet de ces modifications. Tous ces artifices ne sont que des indications de ce que pourrait être un enseignement de la programmation comme pensée en information. Mais où et dans quel cadre un tel enseignement peut-il se dérouler ? Est-ce que ce doit être dans un curriculum spécifique, une discipline de plus dans notre enseignement scolaire ?

La proposition que je vous soumets consiste à reconnaître la nécessité d’enseignants à plein titre portant ce projet de la capacitation informatique et numérique, tout en situant leur activité non pas dans une discipline spécifique généralisée à tous mais au sein de chaque discipline. Cette proposition risque de déplaire à divers courants de pensées sur cette question. Aux tenants d’un enseignement spécialisé de l’informatique parce qu’elle ne le systématiserait pas. Et à ceux qui sont réticents à l’éducation au numérique parce qu’elle en fait le vecteur de transformations profondes dans chaque discipline, portés par des enseignants à part entière, même si leur nombre ne croîtra que progressivement. Mais elle présente de grands avantages : l’introduction progressive, nécessaire non seulement en raison des pénuries budgétaires mais encore plus en raison pour le recrutement et la formation de ces nouveaux types d’enseignants. Et surtout le fait qu’elle permet de combiner l’accompagnement de l’apprentissage de la pensée informatique avec celui des pratiques collaboratives numériques propres à diverses disciplines … dont la philosophie.

Les pratiques numériques

Permettez-moi ici de partir d’un exemple concret qui est celui de l’utilisation du logiciel libre et service Web co-ment®6 développé par ma société dans l’enseignement secondaire et le premier cycle supérieur dans une dizaine de pays. Ce logiciel permet l’annotation collaborative de textes de toutes natures. Son usage se développe dans des cours de littérature (dans la langue maternelle) et de philosophie. Dans un premier temps, il semble qu’il ne s’agisse que du transfert des pratiques d’annotation marginale d’un texte du monde de la page vers celui de l’écran informatique. Mais en réalité, la sortie du modèle de la page, la création d’un processus d’annotation collective, les outils de filtrage, de recherche, la possibilité de catégoriser les commentaires vont équiper et socialiser cette pratique. L’édition d’un commentaire au moyen d’un format de wiki par exemple pour introduire des liens et références, des notes, des listes, etc. constituent d’ailleurs une forme primaire de programmation. Entre parenthèses le logiciel pandoc qui traduit ce format de wiki dans le format XHTML visualisable dans un navigateur Web7 a été écrit par John McFarlane, professeur de philosophie à l’université de Berkeley.

Les pratiques ne se limitent pas à l’exploration de telle ou telle fonctionnalité prédéfinie. Elles vont s’organiser en procédures, cette fois humaines et non informatiques. Ainsi l’enseignant va par exemple proposer différents rounds d’annotation, visant d’abord l’élucidation, puis le commentaire analytique ou critique, puis la discussion des commentaires des autres, etc.

Vient alors le temps de la réflexion, de l’insatisfaction parce que le logiciel ne permet pas telle action qui paraît utile ou nécessaire, du bricolage (tinkering), de l’adaptation du logiciel ou de la demande de fonctionnalités. Vient aussi le temps de la publication de ce qu’on a produit (dès le primaire, cette publication fait sens). Et en même celui des exports puis des conversions de format qui sont le laboratoire idéal de la programmation.
Les mêmes types de parcours sont possibles par exemple dans la production d’objets matériels dans l’enseignement technologique ou professionnel, dans l’enseignement du design ou artistique, dans celui de l’histoire, des langues, etc.

Ces parcours se produisent aujourd’hui dans des cas qui restent exceptionnels d’enseignants qui ont une double motivation et acquièrent sur le tas une double compétence, précieuse mais nécessairement fragile.

Vers la construction des capacités à la socialité numérique

L’un des intérêts d’une insertion de l’enseignement du numérique dans les pratiques de différentes disciplines est qu’elle ouvre à l’apprentissage des étquettes, conventions et procédures qui dominent la socialité numérique, et par ce biais à une réflexion constructive sur la définition de ces conventions. Ces conventions sont souvent « encodées » dans des styles, des formats, des outils. Elles relèvent de ce que Bernard Stiegler appelle une grammatisation et à ce que les informaticiens décriraient comme langages, automates et modèles. Ce qui est rassurant, c’est que finalement il y a une base commune à l’acquisition des capacités intellectuelles et des capacités sociales propres au numérique. Mais de les rendre appropriables par chacun et chacune au niveau qui en fera des citoyens créatifs dans l’espace numérique comme dans l’espace physique demandera encore beaucoup d’expérimentation et d’exploration.

L’une des difficultés auxquelles l’introduction d’un enseignement de l’informatique et du numérique telle que je l’esquisse se heurte est d’ordre culturel. Alors que dans d’autres domaines des technologies se heurtent à la défiance sociale, le numérique nous fournit l’exemple inverse : une technologie et les pratiques liées sont adoptées par la société avec enthousiasme (fut-ce naïvement) et objet d’une méfiance forte d’une bonne partie de la classe politique et des acteurs culturels reconnus. Je crois cependant que l’évolution des esprits est aujourd’hui suffisante pour que cette difficulté puisse être surmontée.

Voilà j’arrête là en résumant : l’enseignement du code, de la pensée en information est indispensable mais il sera d’autant plus précieux qu’il se fera au contact de disciplines enfin décloisonnées, avec, même pour un nombre limité d’heures, la présence de deux enseignants dans une activité, porteurs de savoirs et de l’acquisition de compétences différents. Cette situation est aujourd’hui préfigurée lorsque des intervenants extérieurs (comme par exemple des artistes ou écrivains numériques) investissent collège ou lycée. Sa généralisation ne sera possible que par une combinaison de libération des initiatives et de volontarisme politique.

  1. Les trois écritures. Langue, nombre, code, NRF Essais, Gallimard, 2009.) ou de Bernard Stiegler dont je vous invite à lire le récent article L’avenir numérique de l’Université ((Mediapart, 7 novembre 2013, http://blogs.mediapart.fr/blog/bernard-stiegler/071113/lavenir-numerique-de-luniversite. []
  2. Ada Lovelace, Notes by the translator on the Memoir of Luigi Federico Menabrea « Esquisses de a machine analytique de Charles Babbage, http://www.fourmilab.ch/babbage/sketch.html. []
  3. Des modèles plus exotiques ont émergé de façon très intéressante (algorithmes évolutifs, programmation moléculaire, programmation par équations exprimant des contraintes synchrones, machine chimique de Gérard Berry, etc.). []
  4. Donald Knuth, a publié en 1970 une analyse du programme que John von Neumann avait écrit pour expliquer comme on programmerait les ordinateurs dont il venait de définir la structure, cf. Von Neumann’s first computer program, ACM Computing Surveys (CSUR), Volume 2 Issue 4, Dec. 1970. []
  5. Cette proximité de la pensée consciente aux outils (langage, texte, code) paraît paradoxale alors que le fonctionnement du cerveau, pour que le peu que nous en connaissons est très éloigné de la programmation impérative, fondé que un parallélisme massif, des procédures de sculpture par effacements, un rôle important des mécanismes temporels. []
  6. http://www.co-ment.com. []
  7. Et de nombreux autres formats. []

4 commentaires

Laisser un commentaire