Les cours d'informatique pour les débutant
Introduction
Informatique ou "computer science" ?
Mon propos n'est pas ici de réveiller le débat sur la nature de l'informatique : science, technique, culture,… mais d'expliciter pourquoi, même si c'est de tout autre chose qu'il sera question, le point de départ sera apparemment de proposer une "définition" de l'ordinateur.
On peut se livrer à la petite expérience suivante : comme dans certains tests psychologiques, on invite les participants à associer de manière réflexe, sans longue recherche, un ou des mots à ceux qu'on va énoncer. On donne ensuite successivement des mots comme "météorologie" (qui amène "prévisions", "climat", "temps", "dépression",… et rarement "thermomètre" ou "baromètre"), "astronomie" (qui évoque "calculs", étoiles", "univers", "galaxie" … et rarement "télescope") en terminant par "informatique" (qui amène essentiellement une majorité d' "ordinateur" et quelques "information").
On peut énoncer un premier principe essentiel :
L'informatique n'est pas la science des ordinateurs, pas plus que la météorologie n'est la science des thermomètres ou l'astronomie n'est celle des télescopes
Principe 1-1 : l'informatique n'est pas la science des ordinateurs
Même si nous allons, dès lors, parler de tout autre chose que d'ordinateur, le fait même que le mot informatique appelle immédiatement celui d'ordinateur montre qu'il est essentiel de prendre le prétexte d'une "définition" de ce dernier pour aborder l'essentiel : le caractère formaliste des traitements d'informations exigé par les caractéristiques de l'ordinateur.
- L'ordinateur ?
C'est une machine à traiter des informations, de manière formelle (ou formaliste) pour autant qu'on lui ait préalablement indiqué comment mener à bien ce traitement.
Ceci ne constitue évidemment pas une "définition" de l'ordinateur; énormément de choses manquent : rien n'est dit sur l'architecture, sur le mode de fonctionnement (on ne retient même pas le fait que cette machine nécessite une alimentation électrique) …
Le mot "machine" ne sera pas ici davantage précisé1; il servira entre autre à corriger tous les anthropomorphismes que nous serons amené à faire à propos de l'ordinateur et de son de manière formelle comportement. La description de cette machine, du matériel (hardware) fera l'objet d'un chapitre dans la suite.
Bien plus important est l'aspect traitement formel des informations et c'est lui qui va à présent retenir notre attention.
Ne dites plus "informatique", dites "inFORMEatique"
Une manière frappante d'illustrer le propos du présent chapitre est de retenir le slogan suivant : ne dites plus «informatique », dites «"inFORMEatique » !
Principe 2-1: ne dites plus informatique
2.1 Traiter des informations
Il importe ici de bien saisir dans quel sens les mots "traiter des informations" doivent être entendus dans le contexte qui nous occupe.
Un point de départ possible consiste à chercher, dans notre expérience personnelle des situations où ils nous semble bien "traiter des informations". Il est important cependant de préciser ces exemples pour éviter que n'importe quelle activité rationnelle soit présentée comme "traitement d'informations"; et cela, même si certains affirment que toute activité du cerveau humain est traitement d'informations et que, dès lors, tous nos comportements participent d'un certain traitement d'informations.
Les exemples sont fort nombreux, mais afin de pouvoir à la fois obtenir des descriptions précises, nous présenterons ces traitements d'information sous une forme commune. Les exemples obéiront donc à la schématisation suivante :
Informations
Informations reçues
Traitements rendues (Entrées) (Sorties)
Informations consultées
Figure 2-1 : schéma d'un traitement d'informations
Sans la contrainte apportée par la schématisation ci-dessus, beaucoup de propositions de "traitement d'informations" (par un être humain) comportent comme effet (comme sortie) non de manière formelle des informations "objectivables", mais plutôt des comportements, des attitudes, des actions,
C'est vrai qu'au delà des traitements d'informations eux-mêmes, les canaux (en informatique, on dirait les périphériques) par lesquels les informations sont acquises ou rendues marquent une énorme différence entre les ordinateurs et les humains.
Les exemples demandent souvent à être précisés, essentiellement dans le but d'objectiver et de simplifier les entrées nécessaires et les sorties fournies.
Ainsi,
Résumer un chapitre du cours devient
Un texte d'une dizaine
Synthétiser en une page l'essentiel
Un résumé d'une seule de pages, en français du texte fourni page, en français
Figure 2-2 : schéma d'un résumé et
Prendre des notes pendant un cours devient
L'enregistrement vidéo
Quelques pages de d'une heure de conférence contenu de la conférence texte écrit
Figure 2-3 : schéma de la synthèse d'un cours
On pourrait encore ajouter de multiples exemples :
Une liste d'une
Trier par ordre alphabétique la liste
La même liste triée trentaine de noms fournie par ordre alphabétique
Figure 2-4 : schéma d'un tri
Initiation à l'informatique de manière formelle
Un texte d'une dizaine
La version traduite
Traduire ce texte en anglais de pages, en français du texte
Un dictionnaire français-anglais
Figure 2-5 : schéma d'une traduction
La description d'une
Calculer la dérivée de la fonction
La dérivée de la fonction fonction mathématique fournie fournie un formulaire
Figure 2-6 : schéma d'un calcul de dérivée
L'énoncé d'un problème
Le texte de la solution
Résoudre le problème posé de physique du problème
Figure 2-7 : schéma de la résolution d'un problème mais aussi (même si nous n'avons pas le sentiment que le traitement d'information suivant soit d'une grande difficulté) :
Conjuguer ce verbe à tous les temps
L'infinitif d'un verbe
Une page reprenant régulier de la première de l'indicatif, du conditionnel et du les conjugaisons du conjugaison verbe fourni subjonctif
Figure 2-8 : schéma de la conjugaison
On pourra à raison objecter qu'un cours n'est pas (toujours) une conférence et que ce qu'en capte "en direct" un étudiant au moment de sa prise de notes est bien plus que ce qu'en restitue une cassette vidéo. J'espère qu'on aura compris que l'important ici est que les "informations" tant en entrée qu'en sortie puissent être clairement identifiées, qu'elles laissent en quelque sorte des traces objectives, formelles (dans le sens d'indubitables). La contrainte du schéma tord évidemment ce qu'un humain attache à "traitement d'informations", avec tout ce qui concerne la perception, les impressions, les sensations, … Ensuite, et ceci est loin d'être anecdotique, les exemples fournis (sauf le dernier) mettent en oeuvre des traitements sophistiqués et il est indispensable de chercher des propositions de traitements plus "bêtes" de manière formelle ou plus réflexes (pour ne pas employer les termes "automatiques" ou "machinaux") si l'on veut voir émerger des exemples comme celui de la conjugaison ou ceux des manipulations numériques.
Beaucoup de propositions entrent difficilement sans le schéma prescrit, soit parce qu'elles mettent en oeuvre des comportements, des actions ou se basent sur un faisceau d'informations difficilement "objectivables", soit que les canaux de réception des informations soient trop sophistiqués, soit encore que le "traitement" attendu ne soit pas très clair. Par exemple :
- répondre à quelqu'un qui vous salue,
- confectionner un plat, d'après une recette de cuisine,
- poser un diagnostic après examen d'un malade,
- conduire une voiture,
D'autres entrent parfaitement dans le schéma attendu, au prix parfois de précisions quant à la forme des entrées et des sorties :
- traduire un texte du français vers l'anglais,
- sur base de l'énoncé du sujet proposé, écrire le texte d'une dissertation,
- répondre à des questions lors d'un examen écrit,
- choisir le menu d'un déjeuner au restaurant,
A chaque fois que c'est possible, nous classons peu à peu ces propositions pour obtenir le tableau suivant :
Traitement formel ou
Traitement difficilement (non !) aisément formalisable formalisable
(Sens, signification, )
Traitements portant - calculer la moyenne d'une série de cotes
- faire une division par calcul écrit
- Traitements portant - conjuguer un verbe
- résumer un texte sur le langage
- compter les mots d'un texte
- synthétiser une conférence (texte, )
- vérifier si un mot est présent
- traduire un texte dans un texte
- écrire une dissertation
- fournir les fréquences respectives des mots d'un texte
- corriger l'orthographe d'un texte
- écrire un nombre en toutes lettres
- Autres
- chercher le numéro de téléphone d'un abonné dans l'annuaire
- dériver une fonction
- trier une liste de noms
Figure 2-9 : classement des traitements d'informations
Initiation à l'informatique de manière formelle
Quelques remarques sont à présent indispensables :
- il est normal que la cellule correspondant au traitement non formel de nombres reste vide : les manipulations numériques sont par nature formelles1; pour additionner, soustraire, multiplier, … il n'est pas nécessaire que les nombres concernés aient un sens. Ce n'est pas un hasard si les premiers ordinateurs se sont appelés des calculateurs électroniques : le calcul (portant sur des nombres) entre parfaitement dans les "compétences" du "manipulateur formaliste" qu'est l'ordinateur2.
Il nous suffit de nous interroger sur ce que nous pensons que l'ordinateur pourra faire avec des nombres pour obtenir une série d'exemples corrects : additionner, soustraire, comparer,
C'est bien normal puisque les manipulations numériques de l'ordinateur sont identiques aux nôtres et ne font en aucun cas référence à une signification des nombres manipulés.
- Il est tout aussi normal que la cellule correspondant aux manipulations formalistes portant sur du texte (ou plus généralement sur des informations langagières) n'ait été complétée qu'avec peine puisque nos traitements portant sur du texte ne sont presque jamais formels. Un texte, d'abord nous le lisons pour en prendre connaissance; on ne lit pas "Notre-Dame de Paris pour le plaisir de déclarer que ce roman comporte 348.832.766 mots ou qu'on y trouve 173 fois le mot "encore".
Essayez donc de prévoir les manipulations que l'ordinateur peut accomplir sur un texte : vous verrez, que contrairement à ce que vous pouviez de prévoir concernant les nombres, vos suggestions seront bien moins nombreuses.
Et même quand les traitements évoqués à propos de textes sont formalisables, nous ne nous y attelons pas de manière formaliste. La conjugaison est à cet égard éclairante : conjuguer correctement peut se faire en ne tenant compte que de la forme (= de la succession des lettres) du verbe à conjuguer, mais ce n'est pas en évoquant ces règles formelles que nous conjuguons : c'est par euphonie, de manière presque réflexe et non en manipulant les lettres constituant pronoms, radicaux et terminaisons. Plus profondément, ceci veut dire que le décorticage formaliste auquel l'informatique nous oblige ne nous est pasnaturel puisque, même pour les tâches formalisables nous ne pouvons prendre appui sur nos manières de procéder : nous serions bien incapables d'ailleurs en général de préciser ce que sont ces processus; ils ne font en tout cas généralement pas appel à des procédures conscientes.
- La décision de placer tel exemple dans telle cellule du tableau est évidemment en partie arbitraire. Face à la tâche "détecter les fautes d'orthographe dans un texte", on peut, selon ce qu'on sous-entend par ces mots, la considérer comme formalisable (sinon on ne parlerait pas des "correcteurs orthographiques" associés aux logiciels de traitement de texte) ou comme difficilement formalisable, si l'on attend une détection fine des erreurs grammaticales.
"On ne peut parler de signification attachée à un nombre. 4 ne veut rien dire. C'est un repère."
"L'information numérique a donc ceci de très particulier qu'elle est un contenant sans contenu, une forme sans signification." (Arsac 87).
Le chapitre suivant nous montrera d'ailleurs que quelles que soient les informations que nous pensons lui faire manipuler, l'ordinateur reste essentiellement un calculateur de manière formelle
2.2 Un peu de vocabulaire et une définition de l'informatique
Plusieurs termes ont ici été employés : formel3, formaliste4, formalisé5, formalisable.
En ce qui nous concerne, l'éclairage des termes utilisés peut être synthétisé comme suit :
La description d'un traitement d'informations est formelle ou formaliste si elle ne fait appel qu'à la forme, l'apparence des informations traitées sans jamais se référer au sens que nous leur donnons.
Un traitement d'informations est formalisable s'il est possible d'en donner une description formelle.
Il est formalisé, si cette description formelle a déjà été réalisée.
C'est sans doute le terme formalisable qui rend le mieux compte de l'effort qui est au cœur de la discipline informatique, celui d'une description purement formelle des traitements.
En effet, l'informatique peut être vue comme une entreprise et une démarche (une quête sans fin ?) pour faire reculer vers la droite la frontière définie dans le tableau ci-dessus, pour élargir la colonne du formalisé et réduire celle où les traitements semblent seulement redevables du sens.
L'objet de l'informatique, c'est en effet de transformer du formalisable en formalisé.
La frontière entre le formel et le non formel n'est donc pas rigide ou imperméable, puisque tout l'effort de l'informatique est de faire passer certains traitements dans la colonne de gauche. .
De plus, même si la distinction formel - non formel est essentielle, elle n'est pas toujours simple à établir, sauf pour ceux qui, justement, ont une longue expérience de l'informatique ou de l'utilisation des outils qu'elle a sécrété et ont dès lors intégré les contraintes relatives au caractère formaliste des traitements. Plutôt que de parler de deux catégories, il serait d'ailleurs préférable d'évoquer un continuum sur lequel on classerait les traitements d'information :
Très facilement
Très difficilement (non !) formalisable formalisable
Résumer additionner conjuguer dériver
Ecrire une dissertation
Figure 2-10 : classement des traitements d'informations
Si on peut aisément recenser les traitements déjà formalisés - il suffit d'inventorier les tâches dont un ordinateur peut venir à bout - il est par contre bien plus difficile de borner le formel : qui concerne uniquement la forme. Une distinction purement formelle. Qualités formelles d'une œuvre. Qui considère la forme, l'apparence plus que la matière, le contenu. Classement, plan formel. (Le Petit Robert, 1993).
Formaliste : qui observe les formes, les formalités avec scrupule. (Le Petit Robert, 1993)
Formaliser : réduire (un système de connaissances) à ses structures formelles. (Le Petit Robert, 1993)
Initiation à l'informatique de manière formelle domaine du formalisable. C'est ici essentiellement une question d'opinion : la traduction d'un texte constitue-t-elle un traitement formalisable ? et la synthèse d'un texte ? et la correction de l'orthographe ?
Il est en tout cas indispensable de proposer un critère même s'il est imparfait ou approximatif qui permette en quelque sorte de mesurer le degré de difficulté de formaliser un traitement d'information.
2.3 Le critère du "copain portugais"
J'ai un ami portugais qui ne connaît pas un traître mot de français, et je souhaite lui donner (en portugais évidemment) les indications nécessaires à certains travaux. Il est facile de voir que je pourrai par exemple lui fournir la marche à suivre pour qu'il puisse conjuguer un verbe français : il ne sera pas conscient qu'il est en train de conjuguer, il serait parfaitement incapable de prononcer les suites de caractères que je vais lui demander d'écrire, il ne comprendra pas ce que signifie le travail que je lui commande, mais cela n'a aucune importance : en suivant mes indications il va conjuguer en français.
Ainsi en se limitant à un verbe régulier du premier groupe, mes instructions (en portugais) pourraient être du style :
- demande qu'on te fournisse le mot à on lui donne "porter" traiter (par exemple sur un petit bout de papier)
- écris ce mot au dessus de ta feuille il écrit porter
- efface les deux derniers caractères le mot devient port de ce mot
- écris "je" puis passe un espace puis il écrit je porte écris le mot raccourci auquel tu colles (sans espace) la lettre "e"
- passe à la ligne, écris "tu", puis le il écrit à la ligne tu portesmot raccourci auquel tu colles (sans espace) les lettres "es"
Même si cela est fort loin des contraintes syntaxiques des langages de programmation (voir la suite du cours), nous venons de concevoir ainsi un premier programme (à destination du copain portugais). Nous allons y revenir, puisque (et cela illustre bien cette difficulté de formaliser) ce premier exemple de programme est aussi le premier exemple de programme incorrect On notera que nous sommes ici aux prises avec la quatrième partie de la "définition" préalablement donnée pour l'ordinateur : "pour autant qu'on lui ait indiqué comment mener à bien ces traitements".
De la même manière nous pourrons expliquer à notre ami portugais (même s'il n'y comprend rien) comment réaliser une addition écrite, comment calculer une moyenne, et même en prenant pas mal de temps comment calculer la dérivée d'une fonction mathématique élémentaire.
Mais si le travail consiste à donner (en portugais) les règles qui vont permettre de résumer un texte écrit en français, on devine qu'il s'agit là d'une tâche redoutable, peut-être même impossible.
Il importe de bien insister ici sur le fait qu'il s'agit de donner les indications pour un texte quelconque, qu'on n'a évidemment pas devant les yeux lorsqu'on rédige ces indications.