Quand le savoir faire ne suffit plus

Transcription

Quand le savoir faire ne suffit plus
Quand le savoir faire ne suffit plus ...
(ou
Qu'y a-t-il au cœur de la pensée algorithmique et de la programmation ?)
Ch. DUCHATEAU
Centre pour la Formation à l'Informatique dans le Secondaire (CeFIS)
Facultés Universitaires N-D de la Paix,
NAMUR
Le flou dans lequel la plupart des gens tiennent le terme "algorithmique" (beaucoup le faisant rimer avec
"mathématique" quand ce n'est pas, tout crûment, avec "logarithmique") le tient à l'écart des débats sur la
place de l'informatique dans la culture et la formation. On ne sait pas bien ce que recouvre ce mot, et le
brouillard qui l'entoure le met à l'abris des critiques et des jugements. Par contre il est bien difficile d'oser
encore le mot "programmation" sans passer, surtout aux yeux des "connaisseurs" (entendez ceux qui
manipulent sans complexe un ordinateur), pour un diplodocus de l'informatique, membre d'une espèce en
voie de disparition. "Comment, à l'heure des "menus déroulants", des "logiciels conviviaux" et autres
"hyper-medias", vous n'allez pas ENCORE ressortir le Pascal de grand-papa !!! Quand le premier venu
sera bientôt capable de manipuler sans complexe "système expert" et "banque de données", vous n'allez
pas ENCORE nous accabler avec "l'approche descendante", la "programmation structurée" et autres
séquelles rébarbatives et assommantes d'une époque révolue !!!"
Ce rejet est bien perceptible dans les milieux de l'éducation : l'enseignement de l'informatique, et
particulièrement de la programmation, a parfois pris une petite place dans le curriculum de l'enseignement
secondaire. On se trouve à présent face à une double attitude : d'une part celle rejetant purement et
simplement tout enseignement de l'informatique ou, à tout le moins, exigeant de l'expurger des pratiques
aussi inutiles que la programmation, et d'autre part celle prônant son annexion par les mathématiques.
Dans le premier cas, la dépouille de la défunte formation à l'informatique serait partagée entre les autres
disciplines, chacune arrachant les morceaux qui lui conviennent, l'essentiel étant de toute manière que les
"outils informatiques" soient manipulés au sein des divers cours : le prof de math fera un peu
d'algorithmique, on utilisera les tableurs au cours d'économie, les gestionnaires de fichiers au cours de
géographie ou d'histoire, le traitement de texte partout, et, en prime, un EIAO 1 omniprésent familiarisera
sans peine les élèves avec l'ordinateur et le monde de l'informatique.
La seconde éventualité placerait l'apprentissage de l'informatique dans le giron de celui des
mathématiques. Il est vrai que ce sont souvent les professeurs de mathématiques qui assurent le cours
d'informatique et que, dès lors, l'initiation à la programmation fait la part (trop) belle aux situations
"mathématiques". Mais cette annexion aurait pour effet de réserver a priori la découverte de la pensée
algorithmique aux "forts en math" et d'amputer le terrain couvert par la programmation de domaines
importants.
Avant de jeter ainsi, dans la fosse commune des concepts révolus et des activités surannées,
l'algorithmique et la programmation (qui en est l'incarnation), je souhaiterais que cette inhumation se fasse
dans la clarté et qu'on sache clairement ce qu'on est en train d'enfouir au mausolée des idées
poussiéreuses et des conceptions vieillottes... Il est vrai que si le critère d'utilité immédiate est au centre
de nos préoccupations, la programmation mérite de fait un enterrement de première classe. Mais, elle ne
restera pas longtemps seule dans l'oubliette des approches dépassées et des théories désuètes : le
même critère d'utilité l'y fera accueillir bientôt les mathématiques, l'analyse littéraire, la poésie et la
musique...
1
enseignement intensément inmanquablement intelligemment apauvri assisté par ordinateur
1
Quand le savoir faire ne suffit plus ...
Je vais m'attarder ici sur ce qui fait le coeur de la pensée algorithmique et de la démarche de
programmation en montrant qu'elles nous font franchir les frontières de notre monde mental habituel, celui
du "savoir faire", pour nous faire pénétrer dans un monde nouveau et fascinant, celui du "savoir faire
faire".
1. Vous avez dit problème ?
Dans le champ sémantique où prend place la programmation, on trouve certainement les termes
"ordinateur", "langages" mais aussi, à coup sûr, pour qui a un peu fréquenté ces parages, les vocables
"analyse" et "problème". Je remettrai à leur place tantôt l'ordinateur et les langages de programmation,
mais il est impératif de souligner d'emblée ce que recouvre, lorsqu'il est question d'algorithmique et de
programmation, l'expression "analyser un problème".
Il suffit pour cela de repartir de l'un ou l'autre énoncé "classique" ou, en tout cas, bien connu des adeptes
de la programmation et présents dans les ouvrages qui en parlent.
On y trouve, par exemple :
"analyser le problème de donner la date de demain, sachant quel jour nous sommes"
ou
"le problème consiste à écrire en toutes lettres un nombre exprimé en chiffres"
ou encore
"résoudre le problème de déterminer le plus grand de trois nombres"
Si vous êtes un habitué du monde de la programmation, ces énoncés vont vous paraître bien anodins.
Faites alors l'expérience de les proposer à des gens non encore contaminés. Vous verrez, dans leurs
yeux étonnés, à quel point il est choquant d'accoler, comme ci-dessus, le mot "problème" aux tâches
franchement imbéciles qui sont décrites. Pourquoi diable parler de problème à propos du fait de pouvoir
dire quel jour nous serons demain ou d'être capable de choisir le plus grand de trois nombres? Parlez-moi
d'un beau "problème" de robinets, de trains qui se croisent ou de partages inégaux; là, d'accord : ce n'est
pas simple et la plupart d'entre nous ne gardent que des souvenirs émus de la peine, sinon des larmes,
que leur ont couté ces "vrais problèmes"!
Même si nous allongeons la liste de nos énoncés en proposant de "trier des nombres" ou de "chercher
un nom dans une liste", nous aurons bien du mal à faire comprendre pourquoi nous parlons "d'analyse "
et de "problèmes" là où l'on ne voit qu'activités fastidieuses.
Pourquoi, dès lors conférons nous tout de même le statut de "problèmes" à ces propositions de "tâches"
ennuyeuses et débiles ? Et qu'aurons nous "résolu" lorsque nous décrèterons que notre travail de
programmation est terminé ?
Répondre à ces questions, c'est cerner ce qui fait l'essentiel de la démarche de programmation, ce qui est
au coeur de la pensée algorithmique. Et ce noyau dur tient en peu de mots :
PROGRAMMER
c'est
FAIRE FAIRE
Si chacune des tâches décrites ci-dessus va donner lieu à un véritable problème, c'est simplement parce
qu'il s'agit, non de l'effectuer nous même (ce qui, vraiment, n'aurait aucun intérêt), mais plutôt d'expliquer
2
Quand le savoir faire ne suffit plus ...
à "un autre" comment il va pouvoir s'y prendre pour la mener à bien.
2. Faire et faire faire : tâche et problème
La situation qui nous est familière peut être schématisée par
Moi + Outil
Tâche
Ainsi, par exemple :
Moi + machine à écrire
composition d'un texte
Moi + calculatrice
calcul d'une moyenne
Moi + bac à fiches
gestion des emprunts de livres
ou
ou
Même si l'ordinateur est utilisé, à travers les outils logiciels que propose l'informatique, la situation reste,
au fond, inchangée :
Moi + traitement de texte2
composition de texte
Moi + tableur
calcul d'une moyenne
Moi + gestionnaire de fichiers3
gestion des emprunts de livres
ou
ou
La situation dans laquelle me place la programmation est bien différente :
Moi
Exécutant
Tâche
Marche à suivre
Je ne suis plus aux prises directement avec la tâche à réaliser et, si l'ordinateur entre dans le champ de
mes préoccupations de programmeur, ce n'est certes pas comme un outil qui va m'aider à venir à bout du
traitement proposé. Il serait si simple de rester dans la situation familière ou je fais les choses; il me faut
ici passer dans la problématique inconfortable où je vais devoir les faire faire. L'ordinateur n'apparaît plus
alors comme un outil, mais comme l'exécutant à qui je vais devoir fournir toutes les explications
nécessaires pour qu'il puisse mener à bien, à ma place, une tâche que je pourrais (souvent) effectuer
moi-même, pratiquement sans réfléchir. Il constitue, en quelque sorte, un obstacle entre moi et la tâche à
effectuer. Mon problème, c'est de concevoir et de rédiger la marche à suivre à laquelle se conformera
aveuglément cet exécutant-ordinateur et dans laquelle j'aurai entièrement décortiqué en constituants
élémentaires la tâche à réaliser.
Le schéma se complète donc :
2
On me permettra ce raccourci pour "ordinateur équipé d'un logiciel de traitement de texte"
3
Je ne parle évidemment pas ici des utilisations d'outils logiciels qui participent au monde de l'algorithmique : définition d'une
feuille de style lors de l'utilisation d'un logiciel de traitement de texte, conception de macros pour automatiser des séquences
d'opérations d'un tableur, usage d'un logiciel de gestion de fichiers en mode "programme",...
3
Quand le savoir faire ne suffit plus ...
Moi
Exécutant
Tâche
il exécutera
je conçois
elle gouvernera
Marche à suivre
On remarquera l'emploi du futur : le "faire faire" exigé par la programmation n'est pas un "faire faire" en
direct. Toutes les consignes nécessaires, il me faut a priori les enfermer dans une marche à suivre, un
algorithme : l'exécution aura lieu en différé sans qu'il me soit possible alors d'intervenir pour en rectifier le
déroulement. Cette problèmatique constitue pour moi le coeur de la pensée algorithmique : savoir faire ne
suffit plus, il faut être capable de savoir faire faire, en différé !
Ainsi, un problème, dans le monde de la programmation consiste
- face, d'une part, à une tâche, décrite aussi précisément que possible,
- face, d'autre part, à un exécutant aux capacités limitées mais parfaitement connues,
à rédiger la marche à suivre indispensable pour faire faire cette tâche par cet exécutant.
On comprend mieux, dès lors en quoi les énoncés proposés plus haut constituent de vrais problèmes de
programmation ; il suffit d'accepter de les réécrire :
"analyser le problème de faire donner la date de demain, sachant quel jour nous sommes"
et
"le problème consiste à faire écrire en toutes lettres un nombre exprimé en chiffres"
et
"résoudre le problème de faire déterminer le plus grand de trois nombres"
Et nous savons qu'il y a un monde entre "être capable d'effectuer les tâches proposées" et "pouvoir les
faire faire par l'exécutant-ordinateur". Ce monde, c'est celui de la programmation, justement !
Encore un mot : il manque évidemment à chacun des énoncés ci-dessus, la description précise des
caractéristiques de l'exécutant à qui nous destinons les marches à suivre correspondantes. Il va de soi
qu'il s'agit à chaque fois de l'ordinateur, transfiguré par sa compréhension apparente de l'un ou l'autre
langage de programmation (de type procédural). Je voudrais cependant insister lourdement sur le fait que
pour qu'un problème soit correctement et complètement posé en programmation, il faut disposer d'une
description précise à la fois de la tâche à faire faire et de l'exécutant qui devra l'effectuer. Autrement dit, la
conception d'un algorithme doit évidemment prendre en compte ce qu'il faut faire (faire) mais aussi ce
dont est capable l'exécutant qui en sera chargé.
3. Quelques exemples
La programmation habituelle
Le processus qui est au coeur de la pensée algorithmique s'incarne le plus souvent dans la
programmation "habituelle", telle qu'on peut la vivre lorsque l'interlocuteur est l'ordinateur équipé d'un
compilateur (ou d'un interpréteur) Pascal, LSE, Basic, ...
4
Quand le savoir faire ne suffit plus ...
S'il fallait alors dresser une caricature de l'exécutant, il suffirait de dire que nous avons à faire à un
manipulateur d'informations, à condition de dépouiller ce dernier terme des attributs de "sens" et de
"connaissance" que nous lui attachons habituellement. Il va sans dire, dès lors, que les tâches traitables
sont celles consistant en des manipulations formelles (= basées sur la seule forme, la seule apparence)
d'informations.
Cette restriction des capacités de l'exécutant aux seuls maniements formels d'informations ne pose aucun
problème dans les tâches de traitements de nombres, qui sont, par essence, formalistes. Par contre,
lorsque l'on opère sur des informations de type "texte", cette contrainte de s'en tenir strictement aux
manipulations formelles est presque insupportable. Au delà de quelques aspects techniques sans grande
importance, le problème est identique à celui auquel je serais confronté s'il me fallait faire faire les
traitements attendus à propos d'un texte rédigé en français, par un ami portugais ne comprenant pas un
traitre mot de notre langue. S'il s'agit seulement de lui faire compter les mots du texte, mes explications
(en portugais) ne vont pas me demander trop d'effort. Je vous laisse le soin d'imaginer ce que peut être
ma perplexité, si je souhaite lui faire résumer le même texte...
Cette nécessité d'enfermer le "sens" dans la "forme", de traquer sans cesse la "sémantique" dans la
"syntaxe", le "contenu" dans le "contenant" caractérise l'activité de programmation "classique". J'y
reviendrai plus loin.
Au delà de ces caractéristiques de l'exécutant-ordinateur qui colorent fortement la démarche de
programmation, on retrouve bien le schèma déjà présenté :
Analyste-programmeur
Exécutant
manipulateur d'informations
Tâche de traitement
formel d'informations
Algorithme
Je ne peux m'y attarder ici, mais le chemin qui conduit de la tâche à son exécution par l'ordinateur est
jalonné de quelques étapes, articulées autour de questions phares, qui balisent le parcours et autour
desquelles on peut articuler l'apprentissage.
Analyste-programmeur
Exécutant
manipulateur d'informations
Quoi faire ?
Spécifications
Programme
Comment faire ?
Stratégies
Comment dire ?
Comment faire faire ?
Algorithme
5
Tâche de traitement
formel d'informations
Quand le savoir faire ne suffit plus ...
Le lecteur intéressé par les développements de toute cette problématique du "faire faire" dans le cadre de
la programmation "classique" peut consulter [4],[7] ou [8].
LOGO
Depuis plusieurs années déjà, l'environnement d'apprentissage proposé par le langage LOGO, et
spécialement ses aspects graphiques, est exploité dans les classes. Je ne souhaite pas ici analyser la
pertinence globale de ce choix, mais seulement montrer que LOGO place l'apprenant au coeur de la
pensée algorithmique et du monde de la programmation. Et ce n'est absolument pas à cause de la
présence de l'ordinateur.
Ceux qui prétendent que LOGO permet aux enfants de dessiner sont vraiment à côté du vrai processus.
Quel intérêt y aurait-il d'ailleurs à dessiner des cercles, des carrés ou des maisons ? A travers LOGO,
l'enfant ne dessine pas, il fait dessiner ! Ce qu'il a devant lui, ce n'est pas un ordinateur, ni non plus une
panoplie d'outils graphiques, c'est un exécutant-tortue à qui il va pouvoir donner des ordres de
déplacements, pour qui il va concevoir des marches à suivre. Et il y a un monde, à nouveau, entre
"dessiner un cercle" et "concevoir à l'avance, pour l'exécutant-tortue, la marche à suivre comportant
toutes les indications indispensables pour lui faire tracer un cercle"4.
Ici encore, le processus est identique :
Apprenant
Tortue
Dessin
Marche à suivre
Les machines à commande numérique
Voici, en apparence, un monde bien différent de celui de l'informatique. Pourtant, le saut qualitatif lors du
passage d'un travail classique au tour ou à la fraiseuse à ce "même" travail sur des machines à
commande numérique fait basculer dans l'univers de l'algorithmique. La machine, l'outil, qu'on manipulait
"en direct", pour fabriquer la pièce souhaitée, s'est muée en exécutant qui exige de son "programmeur",
qu'il déplie en une marche à suivre explicite la succession et l'enchaînement des opérations
indispensables. Les "savoir faire" qui présidaient au travail du tourneur ne suffisent plus : il faut "savoir
faire faire" en fournissant à travers un mode d'expression, comme par exemple le GRAFCET, le
"programme" qui sera suivi (en différé) par l'exécutant-tour.
4
J'ai vu des professeurs de mathématiques passer des heures pour imaginer comment faire dessiner deux cercles
concentriques par la tortue. Ils auraient pu tracer ces cercles en quelques secondes !
6
Quand le savoir faire ne suffit plus ...
Travailleur
Tour à commande
numérique
Réalisation d'une
pièce
Marche à suivre
Ici encore, la connaissance des possibilités de l'exécutant-machine est indispensable avant de concevoir
l'enchaînement des indications de mouvement et des opérations qui feront fabriquer la pièce souhaitée.
L'enseignement assisté par ordinateur
Je voudrais à la lumière de ce passage au faire faire, coeur de la démarche algorithmique, souligner
quelques limites de l'EAO.
L'ordinateur peut être pour l'enseignant un auxilliaire irremplaçable. Qu'il s'agisse de dessiner une courbe,
de prendre en charge des calculs fastidieux, de simuler un phénomène, d'effectuer du drill..., il s'avère un
outil précieux, que l'enseignant peut choisir d'intégrer dans ses stratégies, le moment venu. L'EAO
désigne tout naturellement alors un "enseignant assisté (ou aidé) par l'ordinateur". On a parfois,
inconsciemment sans doute, caché sous ce même sigle EAO un "enseignement assuré par ordinateur".
Cela, c'est évidemment du fantasme, et parler de l'ordinateur "tuteur" et de programmes "tutoriels" me
semble, à tout le moins, exagéré ou fort optimiste.
Qu'il me suffise, pour marquer les limites des programmes d'EAO d'évoquer une situation bien banale:
celle d'un dialogue entre l'enseignant et l'apprenant. L'enseignant va pouvoir réagir aux réponses fournies
par l'élève, demander des précisions supplémentaires, détecter dans les erreurs commises les
mécompréhensions, proposer d'autres exemples, ... Bref, s'il s'agit d'un vrai dialogue, entre deux êtres
humains, l'un désireux d'apprendre, l'autre soucieux de faciliter cet apprentissage, on débouche sur une
diversité proprement imprévisible de déroulements possibles.
Si l'ordinateur entre dans la relation, il ne s'agit plus alors de dialoguer "en direct", les yeux dans les yeux,
avec l'apprenant; il faut "faire dialoguer", en ayant prise, évidemment, que sur l'un des deux interlocuteurs,
le seul dont on va préciser les actions et réactions dans l'indispensable marche à suivre.
Enseignant
Ordinateur transfiguré
par un langage-auteur
Dialoguer
avec l'apprenant
Programme "tutoriel"
J'espère que l'on sent toute l'utopie de vouloir "gérer d'avance un dialogue". La seule solution
envisageable reste alors de réduire ce dialogue à une caricature où l'on permet seulement à l'apprenant
de "biffer la mention inutile".
Les tentatives pour "faire enseigner" l'exécutant-ordinateur ont cependant, pour ceux qui s'y essayent, un
7
Quand le savoir faire ne suffit plus ...
aspect extrêmement bénéfique. C'est celui de servir de révélateur de tous les flous et implicites sousjacents à la démarche d'enseignement. Devoir "expliquer", dans le détail, à cet exécutant, comment aider
à apprendre, oblige l'enseignant-programmeur à déplier complètement ses objectifs, ses stratégies, ses
savoir faire,... Il est tenu de poser devant ses propres yeux, de décortiquer comme un objet d'étude, sa
démarche d'enseignement, d'y traquer tous les "à peu près", toutes les imprécisions, toutes les réactions
sans fondement,...L'exécutant est alors un merveilleux miroir qui renvoit, froidement, au formateur une
image sans complaisance de son manque de stratégies efficaces et de réflexions préalables5.
Certaines utilisations de logiciels
J'ai clairement souligné ci-dessus la différence de statut entre les outils que sont les progiciels habituels
et l'exécutant que constitue l'ordinateur équipé d'un langage de programmation.
Puisque j'en suis à indiquer des exemples variés de situations où l'on fait faire en différé, je ne peux bien
sûr manquer de relever les occasions que donnent certains progiciels de manifester cette pensée
"anticipative".
Les traitements de texte actuels, ceux du "WYSIWYG" 6 effectuent en direct les commandes de
présentation données par l'utilisateur. Qu'il demande par exemple de centrer un titre, l'effet est immédiat
et visible : le titre est centré. On sait que cela n'a pas toujours été le cas : les antiques logiciels de
traitement de texte demandaient qu'on truffe le texte proprement dit d'un certain nombre de "codes" qui ne
modifiaient en rien ce qui était montré à l'écran. C'est seulement lors de l'impression, que ces codes
étaient interprétés comme des instructions de mise en page et qu'on mesurait leur effet. Combien
d'erreurs de "programmation" ont conduit, dans ce contexte à l'obtention d'un texte entièrement souligné,
ou complètement en caractères gras, ...
Même les traitements de texte évolués actuellement disponibles comportent des facettes qui nous placent
au sein du monde du "faire faire". Ne parlons pas des possibilités de mettre en place des "macros", qui ne
sont jamais que des expressions plus ou moins ésotériques de véritables marches à suivre qui, le
moment venu, automatiseront certains actions complexes. Mais la simple conception d'une banale feuille
de style, telle que la permettent aujourd'hui la plupart des logiciels de traitement de texte, nous oblige à
penser "en différé". Nous sommes tenus d'anticiper le résultat souhaité en précisant des "souhaits" de
mise en page, qui ne deviendront effectifs que lors de l'appel du style ainsi défini. Au moment où je fixe
les caractéristiques formelles ( le "style") d'un paragraphe à venir, mes choix n'ont pas d'effet immédiat et
visible; c'est seulement quand je ferai appliquer le style préalablement décrit à une portion de texte
existant que mes indications seront suivies et conduiront (parfois) au résultat escompté.
Dans ce cas aussi, le schèma est :
Utilisateur du logiciel
de traitement de texte
Ordinateur équipé
du logiciel
Mise en page
du texte
feuille de style
5
L'ordinateur n'est certes pas le seul "révélateur" de ces pratiques : la conception des "cours programmés", par le dépliage
complet des contenus et des stratégies auquel elle obligeait, était aussi un moyen privilégié de remettre en cause certaines
"méthodes" routinières des enseignants.
6
"What You See Is What You Get": on voit à l'écran exactement ce qu'on obtiendra à la sortie du texte sur l'imprimante.
8
Quand le savoir faire ne suffit plus ...
Et enfin ...
Il y aurait bien d'autres exemples pour éclairer et préciser ce "faire faire" qui est au centre de la pensée
algorithmique. Qu'il me suffise de schématiser le processus qui est au coeur de la composition musicale
Compositeur
Musicien
(exécutant)
Exécution d'une
oeuvre
partition
ou encore la problématique qui est au centre de la réalisation d'un produit audio-visuel (émission
télévisée, fim,...) :
Auteur-scénariste
réalisateur
équipe-technique
réalisation d'un film,
d'une émission vidéo
scénario
La liberté de moyens, la sensibilité, les choix artistiques caractérisant le réalisateur et son équipe
technique ne doivent pas faire oublier qu'ici aussi, le scénario constitue une "marche à suivre" à laquelle
on se tiendra et qui contient, en germe, le résultat final. Comme lors de la programmation classique,
l'auteur doit imaginer pendant la conception du scénario-marche à suivre, ce que donnera la réalisation
des indications et instructions qu'il est en train d'y enfermer. J'ai, personnellement, été frappé du
parallélisme entre cet univers et celui de la programmation ... à ceci près qu'on peut toujours corriger un
programme incohérent ou dont l'exécution ne fournit pas les résultats attendus et qu'il est inutile de
réécrire un scénario qui a débouché sur une émission insatisfaisante...
4. Quelques traits de la pensée algorithmique
On devine déjà la richesse et l'exigence de ce passage au "faire faire". Je citerai, en vrac, quelques
caractéristiques essentielles de cette pensée, correspondant à des attitudes et des facultés qu'elle va
contribuer à développer chez ceux qui veulent la partager, à travers, par exemple, l'apprentissage de la
programmation :
-
-
-
Pour faire faire une tâche, il faut passer en quelque sorte du rôle d'acteur à celui de metteur en
scène : il faut pouvoir prendre du recul, imaginer des possibles, choisir des stratégies
adaptées,...
La programmation comporte une chasse impitoyable aux flous et aux implicites; elle oblige à
déplier (déplier= ex-pliquer) complètement la tâche à réaliser, en ne laissant dans l'ombre
aucun de ses aspects.
Le fait de devoir a priori TOUT dire de la manière d'effectuer la tâche oblige à être exhaustif, à
ne rien laisser dans l'ombre, à percevoir tous les possibles, à tenir compte des "cas limites".
Concevoir une marche à suivre, c'est avant tout organiser; la difficulté ne réside pas dans la
richesse du répertoire d'actions dont l'exécutant est capable mais, au contraire, dans la
manière dont il va falloir combiner et enchaîner le petit nombre de ses possibilités. Le point
central, c'est de pouvoir décortiquer une tâche trop complexe en constituants plus élémentaires
9
Quand le savoir faire ne suffit plus ...
-
qui, convenablement organisés, permettront de venir à bout du travail exigé.
Le fait d'être soumis à la censure finale de l'exécutant rend critique vis à vis de ses propres
productions.
Si l'on regarde de plus près l'activité de programmation, elle se caractérise par la faculté de
pouvoir enfermer dans une expression figée et statique (le texte de la marche à suivre) toute la
dynamique qui présidera au déroulement de l'exécution; c'est une attitude un peu
"schizophrène" où tout en organisant le texte de la marche à suivre, on anticipe ce que sera
son exécution : on ne peut être un concepteur que si, en même temps on est capable de "se
mettre dans la peau de l'exécutant". Ainsi, on garde un pied dans le monde de la tâche à faire
exécuter et l'autre dans l'univers de l'exécutant et de ses possibilités.
On pourrait sans doute allonger cette liste en parlant de la rigueur ou de la cohérence indispensable, de
l'imagination nécessaire à la recherche de stratégies efficaces, des capacités d'introspection
("comment est-ce que je m'y prends face à cette tâche ?"), du sens de l'écoute et du dialogue (au cours
de l'étape la plus compliquée du processus, celle du "quoi faire?", où l'on se renseigne sur ce qui est
attendu),...
Si les caractéristiques décrites ci-dessus sont présentes dans toutes les situations où l'on sera amené à
"faire faire" en différé, d'autres facettes tiennent à la "personnalité" de l'exécutant auquel s'adresse la
programmation classique. J'ai eu l'occasion de souligner qu'il s'agit d'un gestionnaire formaliste
d'informations.7 Cette caractéristique va contraindre à ne jamais référer au "sens" de ce qu'on fait
manipuler. Notre interlocuteur est "quelqu'un" à qui il faut TOUT dire, même ce qui fait partie du "sens
commun" implicitement partagé par tous. Ici aussi les questions posées seront neuves. Par exemple :
-
sur quel critère de "forme", décidons nous qu'une succession de lettres n'a aucune chance
d'être un "mot" ?
comment "formaliser" l'écheveau sémantique des relations qui lient, dans notre cerveau, les
concepts ?
...
Si cette entrave de formalisation oblige à expliciter et à analyser bien des comportements "naturels", il faut
cependant être conscient du caractère fort particulier de l'approche ainsi exigée. Le piège ici c'est de
ramener le sens ou la connaissance à ce qu'on peut aisément enfermer dans des "boites" et dans les
liens qu'on tresse explicitement entre elles. Il faut garder sans cesse en tête l'avertissement de T. Eliot,
prolongé de la remarque de M. Aspen (Cf [9]):
"Qu'est devenue la sagesse que nous avons perdue dans la connaissance?
Qu'est devenue la connaissance que nous avons perdue dans l'information?
Qu'est devenue l'information que nous avons perdue dans les données?"
5. Conclusions
Personne ne prétend évidemment que la programmation est la seule activité capable de développer les
attitudes mises en évidences ci-dessus. Ce "faire faire" est en fait une modalité extrêmement particulière
d'exercice de la pensée organisatrice et rationnelle. Il faut se défendre absolument des amalgames
douteux dans lesquels on qualifie d'algorithmique n'importe quelle attitude rigoureuse et organisée. On ne
fait pas de l'algorithmique "sans le savoir" quand on résoud un problème d'arithmétique ou quand on
utilise un logiciel de traitement de texte. Tenter de recouvrir du manteau de l'algorithmique des domaines
qui lui sont étrangers est aussi vain que d'en ignorer la texture particulière et les qualités propres.
Je ne veux pas plaider davantage pour l'intérêt et et la richesse de l'apprentissage de ce type de pensée,
7
Cf [2] pour plus de détails.
10
Quand le savoir faire ne suffit plus ...
à travers, par exemple une initiation correcte à la programmation. D'autant qu'il est bon d'en souligner les
dangers et les limites. Comme toute approche modélisante, la programmation gomme bien des aspérités
du réel; je dirais volontiers que la démarche de programmation "rabote" souvent la complexité
proprement "intraitable" de la réalité. Le profond danger, c'est de ne pas percevoir ce caractère réducteur
de la pensée algorithmique et de finir par identifier et confondre "ce qui existe" et "ce qu'on peut prendre
en compte", le "traitable" et "le réel". Des antidotes s'avèrent dès lors indispensables, comme présenter
des situations complexes qui permettront de fixer les bornes et les limites de ce pays du "faire faire".
6. Bibliographie
[1]
ARSAC J.
Premières leçons de programmation.
Cedic-Nathan, Paris, 1980.
[2]
ARSAC J.
Les machines à penser. Des ordinateurs et des hommes.
Editions du Seuil, Paris, 1987.
[3]
DUCHATEAU C.
Enseigner l'informatique en octobre 1986.
dans "Construire une éthique de l'eneignement scientifique".
Presses Universitaires de Namur, 1986, pp 102-125.
[4]
DUCHATEAU C.
Programmer ! Pour une découverte des méthodes de la programmation.
Wesmael-Charlier, Namur, 1983.
[5]
DUCHATEAU C.
Du savoir faire au savoir faire faire.
Cours 467 : l'informatique dans l'enseignement. (CPS 84-311).
Conférence Suisse des Directeurs Cantonaux de l'Instruction Publique.
[6]
DUCHATEAU C.
Additionner deux entiers ... et faire additionner deux entiers.
Mathématique et Pédagogie, 63, 1987, pp 33-66.
[7]
DUCHATEAU C.
Incursion au pays du Faire Faire.
Mathématique et Pédagogie,
46, 1984, pp 23-38 (1ère partie)
47, 1984, pp 47-56 (2ème partie)
48, 1984, pp 63-76 (3ème partie)
[8]
DUCHATEAU C.
Images pour programmer
(A paraître)
[9]
Sociéte d'information et formation générale.
Conférence internationale sur l'Education et les Nouvelles Technologies de l'Information,
Juillet 1984, OCDE
11

Documents pareils