Vaches et informatique

Maurice Nivat
 

   Je crois qu'il y a une incompréhension généralisée de ce qu'est l'informatique dans notre beau pays. Il me souvient d'avoir vu, non sans quelque stupéfaction, au salon de l'agriculture vers 1980, un stand portant un beau calicot

Ordinateur Bovin

M'approchant j'ai discuté avec un bonhomme qui vendait sous ce nom un programme calculant chaque jour en fonction de divers facteurs ce que devait être la ration de nourriture administrée à une vache à l'étable.

   C'était sans doute il y a vingt ans et au moins le titre prêtait à sourire. Aujourd'hui tous les éleveurs conscients de bovins ont un PC et un programme qui calcule en effet la ration journalière de leurs bestiaux. Il en résulte une croissance plus rapide des bêtes à viande, une production plus importante des vaches laitières, une économie de fourrage et autres aliments, une meilleure santé pour les bovins et partant pour l'éleveur.

   Les voitures automobiles ont beaucoup changé depuis vingt ans, non pas de look, ni dans leur principe fondamentalement le même : elles consomment moins, elles freinent mieux, elles émettent moins de gaz à effet de serre. Cela est dû à de nombreuses « puces » qui calculent sans relâche, ou quand besoin est, l'instant précis, au millième de seconde, de l'injection de carburant, ou la force à exercer sur chaque roue pour freiner efficacement tout en maintenant la voiture en équilibre sur la route.

   Fini la découpe au jugé avec de grands ciseaux des pièces d'étoffe pour confectionner chemises, jupes ou pantalons : des machines le font mieux qu'aucun tailleur ne l'a jamais fait, il faut dire que le calcul de la façon de découper qui minimise les pertes est assez compliqué. Le calvaire des gens condamnés à avoir des manches toujours trop longues ou trop courtes s'est aussi terminé en douceur, désormais la simplification et l'automatisation des processus de découpe ont amené les fabricants à proposer des vêtements s'adaptant à plusieurs morphologies et non à la seule morphologie idéale reproduite en plusieurs tailles par homothétie.

   Je pourrais multiplier les exemples à l'infini : qu'elle soit apparente ou soigneusement cachée, l'informatique, sous forme de puces qui calculent sans fin, intervient dans la plupart des processus domestiques ou industriels.

   Mais je ne vais pas continuer à argumenter sur la place tenue par l'informatique dans le progrès actuel, elle est à l'évidence une des premières sources d'innovation dans l'immense majorité des domaines de l'activité humaine. Je chercherai plutôt à comprendre pourquoi.

   C'est l'ordinateur, pense-t-on généralement, cet objet mystérieux, voire miraculeux, qu'on achète désormais dans tous les supermarchés de moins en moins cher et dont bien peu de gens savent vraiment comment il marche mais ont appris à se servir, comme d'un outil bien commode.

   Je crois que ce n'est pas l'essentiel. Je crois que l'essentiel est dans le mouvement d'idée qui a abouti à ce que j'appellerai l'algorithmique, la science des algorithmes ou si l'on préfère du calcul. Tout le monde depuis sa plus tendre enfance emploie des algorithmes en permanence : il y a un algorithme dès que l'on décompose une opération complexe en une suite d'opérations simples : on apprend aux enfants à s'habiller, et cela prend du temps, ce n'est pas si simple et ils n'y arrivent pas du premier coup.

   Les algorithmes sont vieux comme le monde. Faire éclater un morceau de silex en petites lames tranchantes comme des rasoirs n'est pas facile, dresser un menhir de plusieurs tonnes non plus. On les appelle algorithmes en hommage à Mukhammad ibn Musa Al Khorezmi, ce mathématicien et philosophe ouzbèque du 8e siècle qui le premier a décrit l'algorithme d'addition des entiers avec propagation de la retenue de droite à gauche que nous employons encore aujourd'hui et qui est statufié devant la grand porte de la citadelle de Khiva, sa ville natale, à 300 km au nord de Boukhara.

   On ne sait pas trop comment les romains faisaient leurs additions, leur représentation des nombres se prête vraiment très mal à faire des additions. L'écriture décimale qui est aujourd'hui utilisée par tout le monde a mis quelques siècles à se stabiliser, l'emploi du zéro « positionnel », mis à la place de la puissance de dix manquante dans la décomposition en somme de puissance de dix, n'avait rien d'évident.

   Implicites ou explicites les algorithmes se sont multipliés et compliqués au cours des siècles. Mais ils ne sont devenus objets d'étude, en eux-même, que récemment, au cours du vingtième siècle, si le mot était utilisé par les mathématiciens, ne serait-ce que pour parler du fameux algorithme d'Euclide, il l'était peu et on lui préférait le mot de méthode ou s'agissant de géométrie celui de construction.

   Dans la vie courante, non mathématique, ce sont les mots de méthode, recette, mode d'emploi qui désignaient la plupart des algorithmes.

   L'histoire de l'émergence de l'algorithmique vaut d'être comptée : presque tout s'est passé de 1920 à 1960 :

  1. Il y a eu d'abord le mouvement des logiciens mathématiques, qu'Hilbert a beaucoup contribué à lancer par son « programme » énoncé en 1906. Les logiciens ont d'abord élaboré des théories de la preuve, chacun sait que les mathématiciens prouvent ou démontrent des théorèmes, en général par une suite d'inférences, d'un ensemble de propriétés que l'on sait vraies, soit qu'elles aient été posées comme axiomes soit qu'on les aient déjà démontrées vraies, on infère que de nouvelles propriétés sont également vraies au moyen de règles d'inférence logiques ; mais les mathématiciens faisaient des preuves comme Monsieur Jourdain faisait de la prose sans réfléchir à la nature des preuves qu'ils élaboraient et sans expliciter les règles admises et utilisées qui constituaient une sorte de logique commune partagée par les gens du métier. Les véritables génies que sont Gödel, Turing, Church ont élaboré de la même façon une théorie abstraite du calcul dont le résultat le plus connu est qu'il y a d'innombrables résultats non calculables, d'innombrables propriétés vraies dans un système formel, c'est-à-dire qui sont des théorèmes, qui ne sont pas démontrables.

  2. La mécanographie s'est considérablement développée entre les deux guerres, surtout en Amérique, avec l'invention des fameuses caisses enregistreuses qui ont trôné dans tous les magasins jusqu'à la généralisation des PC (personnal computers) entre 1980 et 1990. Trieuses et centraux électromécaniques, utilisaient comme les caisses enregistreuses de véritables circuits logiques commandant le déplacement de petites pièces mobiles. Dans un central téléphonique de cette époque, un lien physique était créé entre les deux locuteurs, la machine ne faisant que faire automatiquement ce qu'avaient fait et ont fait encore bien après la seconde guerre mondiale des demoiselles du téléphone « passer » la communication à quelqu'un en mettant une fiche dans le trou correspondant au destinataire. La mécanographie a beaucoup enrichi la compagnie IBM et il s'est formé un corps d'ingénieurs et techniciens des circuits ainsi que la théorie qu'on appelle en anglais « switching theory », que l'on peut traduire par théorie de la commutation : ce sont ces gens-là qui construiront les premières machines à calculer pendant la seconde guerre mondiale.

  3. Le physicien John Von Neumann, déjà mondialement célèbre, annonce dans un congrès en 1930 qu'il en a marre d'écrire de belles équations de la physique que personne ne sait résoudre et qu'il va désormais se consacrer à la résolution des équations. Sa première idée n'a rien à voir avec ce que nous appelons aujourd'hui les ordinateurs : pendant plusieurs années il fait du calcul analogique, consistant, en gros, à fabriquer un circuit régi par l'équation que l'on cherche à résoudre. Si l'on envoie des courants électriques d'intensité correspondant aux données à certains points d'entrée du circuit, on peut obtenir le résultat cherché, en mesurant l'intensité du courant produit en un autre point du circuit. Est-ce sous l'influence de conversations avec Alan Turing en visite à Princeton en 1936 que JVN s'est converti au calcul digital ? Nous ne le saurons jamais, aucun des deux hommes n'ayant raconté leurs entrevues. Toujours est-il qu'à partir de 1936 JVN change son fusil d'épaule et se consacre à la fabrication des premières machines à calculer digitales caractérisées par le fait que les nombres y sont représentés par des suites de « bits » binaires ou de « digits » (chiffres, en français).

   L'effort de guerre colossal fourni par les Américains est très favorable au calcul dont ils ont un besoin crucial dans au moins trois domaines :

  • la mise au point dans le plus grand secret de la première bombe atomique,

  • le déchiffrement des codes militaires japonais et allemands, auxquels s'emploient aussi activement les Anglais, Alan Turing travaillant avec les services du chiffre de Sa Majesté,

  • les problèmes logistiques sans précédents que pose l'approvisionnement en nourriture, armes, vêtements, médicaments d'un million d'hommes qui se battent dans le Pacifique à dix mille kilomètres au moins de la mère patrie.

   Naissent alors les premières machines à calculer ancêtres de nos ordinateurs et ce que l'on appelle la recherche opérationnelle qui met en équation et s'efforce de résoudre des problèmes en particulier de transport, de gestion de stocks, d'emplois du temps. JVN joue un rôle crucial dans ces deux naissances.

   Il manque cependant encore un maillon pour que soit constituée l'informatique que nous connaissons et qu'elle prenne véritablement son essor.

   C'est à Munich, que se réunit un groupe de chercheurs, sous la direction du Suisse Heinz Rutishauser, dans un programme Formula Translator, dont le nom dit presque tout : il s'agit de traduire les formules mathématiques que nous écrivons en suite d'instructions exécutables par une machine. Je sais un peu ce qui s'y passait grâce à Fritz Bauer et Corrado Böhm qui y faisaient leurs premières armes de chercheurs. C'est par eux que je sais que l'Allemand Konrad Zuse, considéré par nos voisins germaniques comme le véritable père fondateur de l'informatique, poussait assez souvent la porte du labo. Je ne sais pas, par contre, par qui était financée cette recherche. Mais c'est IBM qui a profité du résultat, la naissance, en 1960 du premier langage de programmation de haut niveau Fortran. Cette même année voit naître le langage Algol 60, fruit d'une recherche internationale menée sous l'égide de l'IFIP, et Lisp, oeuvre solitaire de John Mac Carthy, bien différent des deux autres.

   On peut désormais décrire les algorithmes dans des langages faciles à apprendre et s'affranchir des particularités de la machine que l'on utilise, c'est le compilateur qui traduit le programme écrit en Algol ou Fortran dans le langage, le plus souvent ésotérique et opaque, de la machine. Et il commence à se constituer des bibliothèques de programmes Fortran, représentant autant d'algorithmes, utilisables par tout le monde, l'écriture de programmes échappant à la brevetabilité que certains auraient voulu imposer.

   Je pense que 1960 doit être considéré comme la véritable date de naissance de l'informatique : le couple indissociable algorithmique et programmation est désormais en place, autorisant la recherche de nouveaux algorithmes dans les domaines les plus divers, leur diffusion, leur amélioration, la mesure et la comparaison de leurs performances, leur utilisation par tout le monde.

   Les machines, qui ne prendront en français le nom d'ordinateurs que vers 1965, sont encore incroyablement lentes, chères, rares et d'utilisation difficile. Le poinçonnage de milliers de cartes perforées avec lesquelles on fournit à la machine données et programmes est fastidieux et source d'erreurs multiples : un trou de trop ou de moins et le programme ne marche pas, mais les outils de mises au point manquent cruellement.

   Mais l'élan est donné : tandis que les chercheurs en informatique dans la décennie 1960-1970 écrivent, affinent, améliorent des compilateurs de plus en plus performants, l'analyse numérique se développe impétueusement, en France beaucoup sous l'impulsion de Jacques Louis Lions, pour résoudre effectivement les équations traditionnelles en mathématiques, équations algébriques, intégrales, différentielles, ou aux dérivées partielles

   Les principales applications, les plus nombreuses, celles qui suscitent le plus grand nombre d'installations de machines et de centres de calcul sont les applications à la gestion des entreprises, gestion du personnel avec établissement des feuilles de paye, gestion des stocks, facturation, gestion du temps de travail des employés et ouvriers avec rationalisation des ressources. La notion de base de données apparaît, si utile aux banques et aux assureurs et devient une branche presque autonome de la recherche.

   Assez lentement au début, car freinée par la faible puissance et le coût exorbitant des machines (par exemple celles à mémoire de ferrite qui sont « tricotées » à la main), l'informatique commence à envahir nos vies quotidiennes sous la forme de factures, feuilles de paye, et autres imprimés divers qui nous parviennent par la poste sorties d'imprimantes d'ordinateurs.

   De fait ce sont toutes les procédures employées ici ou là dans l'industrie, le commerce, l'administration, l'architecture, l'agriculture, le droit, l'éducation, la médecine qui sont réexaminées et informatisées, au moins celles qui peuvent l'être ; et des métiers traditionnels disparaissent ou du moins changent radicalement toutes leurs méthodes de travail, tels les métiers de typographe et de dessinateurs industriels.

   Peu importe le domaine, peu importe la machine, c'est toujours le couple algorithmique et programmation qui est à l'oeuvre : identifier des algorithmes, y réfléchir, les améliorer, les transformer, les simplifier ou les rendre plus performants puis les programmer et les faire exécuter par une machine. Ce mouvement est particulièrement développe aux USA ou l'informatique est depuis quelques décennies considérée comme synonyme de progrès : les entrepreneurs sont attirés au moins par les gains de productivité, les jeunes sont attirés au moins par la possibilité de gagner fort bien sa vie voire de faire carrément fortune.

   Le mouvement continue, ou plutôt s'accélère de nos jours en bénéficiant des progrès stupéfiants des ordinateurs Pour mille euros on achète au supermarché du coin un ordinateur mille fois plus puissant que celui qu'un groupe de 150 chercheurs a eu le plus grand mal à arracher à la rapacité de l'administration en 1980 : il faut dire qu'il valait un millions de francs soit cent cinquante mille euros.

   Je voudrais tirer maintenant deux conclusions.

Science et outil

   Depuis que je m'occupe d'enseignement d'informatique je me heurte à diverses objections dont la principale est que l'informatique est un outil et non une science. La belle affaire ! Les astronomes ont leurs télescopes, les physiciens leurs synchrotrons, les biologistes leurs microscopes, et les chimistes leurs cornues. Nos ordinateurs accompagnent notre pensée, l'autorisent, la suscitent au même titre que tout outil dont se sert tout scientifique. Comme j'imagine tout le monde le sait, un outil peut s'utiliser bien ou mal, à bon ou à mauvais escient, et jamais il ne dispense de la réflexion nécessaire à son bon emploi. Sans connaissance du ciel les télescopes ne servent pas à grand-chose.

   Il y a science par contre dès qu'il y a un ensemble de concepts et de méthodes permettant de comprendre une partie du monde réel qui nous entoure, et d'agir sur lui, concepts et méthodes transmissibles à d'autres et perfectibles dans un démarche critique et rationnelle ; nos concepts ont noms « algorithmes » et « programmes ». Je pense qu'ils ont suffisamment fait la preuve de leur intérêt et de leur utilité, de leur universalité aussi, notre concept d'algorithme dépassant de beaucoup celui des mathématiciens qui est lié aux nombres et aux figures alors que le nôtre s'étend à des mécanismes de la pensée non (pour l'instant) mathématisables comme la traduction, de langues naturelles, la reconnaissance des formes, l'apprentissage. Le corps de méthodes déjà élaborées et expérimentées avec succès pour trouver, améliorer, optimiser des algorithmes ou pour écrire, vérifier, implémenter des programmes croit chaque jour.

   Je bondis donc quand je vois écrit que l'on va donner à des jeunes la « maîtrise » de l'outil informatique en sixième (rapport Attali). Savoir manier une souris et faire apparaître quelque chose sur l'écran c'est maîtriser l'ordinateur comme maîtrise le télescope quelqu'un qui saurait amener une étoile dans le champ de l'instrument sans savoir un mot d'astronomie.

   L'informatique est bien une science, même si elle dispose d'un outil privilégié, et même une science pleine d'avenir si l'on en juge par ses progrès quotidiens et l'immense masse de problèmes non résolus, dont quiconque travaille en informatique connaît plusieurs.

   Enseigner le maniement de l'outil informatique sans connaissance des problèmes qu'il est destiné à résoudre est véritablement absurde.

Algorithmique et programmation

   Il s'agit du couple infernal qui fonde l'informatique mais la divise aussi.

   Personnellement je n'imagine pas que l'on puisse enseigner l'un sans l'autre :

D'abord il faut que les algorithmes soient décrits, d'une manière ou d'une autre, avec toute la précision désirable, avant que l'on puisse en parler véritablement, et décrire un algorithme, fût-ce bêtement en français c'est déjà le programmer. Je pense même que décrire en français des algorithmes est un excellent moyen d'appréhender le problème de la programmation, cela permet de toucher du doigt toutes les difficultés inhérentes à la programmation, liées au choix et à la désignation des objets ou des structures sur lesquelles on travaille, et aux mécanismes de passage des paramètres.

Ensuite la programmation est elle-même une algorithmique, un peu particulière : un langage donne des possibilités d'expression que peut-être un autre ne donne pas, et réciproquement. S'il vaut mieux, dans une perspective d'utilisation industrielle, utiliser le langage le mieux adapté à l'expression de ce que l'on veut écrire, au niveau de l'enseignement il n'est pas inutile d'apprendre à remplacer, une possibilité d'expression manquante par un équivalent, comme un traducteur remplace un mot qui n'existe pas par une périphrase. On a passé trop de temps à se déchirer entre informaticiens sur les mérites comparés des langages de programmation.

   Je sais aussi qu'il y a des détracteurs de la programmation : on ne va quand même pas apprendre à nos enfants à programmer, disent-ils, l'argument principal étant qu'il y a plein de logiciels qu'écrivent des spécialistes et qui marchent très bien. C'est assez curieux pour au moins deux raisons :

Ces gens disent cela comme si l'activité de programmation, affaire de spécialiste était horrible et ennuyeuse, ce qu'elle n'est certainement pas, elle peut être très gratifiante voir amusante (en général évidemment ceux qui rejettent la programmation n'en ont jamais fait et en ignorent tout).

C'est vrai que les bibliothèques de logiciels s'enrichissent constamment, mais il est très fallacieux de croire que cela fait disparaître progressivement la programmation, au contraire cela ne fait que la déplacer.

   Quand on est passé de la programmation en langage machine, à la programmation en « assembleur » puis de cette dernière à la programmation en Algol, on a seulement changé de niveau de granularité, les opérations de base du langage machine étaient vraiment très élémentaires, celles de l'assembleur un peu moins, celle d'Algol déjà nettement moins.

   Maintenant, à moins que l'on ne se contente de faire tourner un logiciel donné répétitivement, on est confronté le plus souvent au problème d'utiliser plusieurs logiciels à la résolution d'un problème. Et cela est encore un problème d'algorithmique et programmation qui n'est pas rendu plus simple, au contraire, par le fait que ce qui devient les opérations de base de cette algorithmique, celles que réalisent les logiciels utilisés, peuvent être fort complexes et sophistiquées.

Depuis qu'ils existent les fabricants d'ordinateurs et les marchands de logiciels utilisent le même principal argument de vente : tout est très simple, trois jours suffisent pour apprendre, ne réfléchissez plus, nous le faisons pour vous.

   Cela a beaucoup desservi l'enseignement de l'informatique tout comme le dessert la guerre des logiciels libres et captifs. N'en déplaise aux tenants des logiciels libres, la première liberté conquise a été celle de l'accès aux ordinateurs, dont une coalition de grands constructeurs de « mainframes » restreignait très efficacement la multiplication jusqu'à l'avènement des PC équipés de Windows. Je n'ai aucune action chez Microsoft, et je trouve la fortune de Bill Gates un peu insolente, mais il a joué dans notre domaine le même rôle que celui que Henri Ford a joué dans l'automobile, c'est-à-dire transformé un jouet de riche en un outil pour tout le monde ou presque. Le combat nécessaire contre la position monopolistique de Microsoft est politique, de même nature que celui, non moins nécessaire, contre les grosses entreprises de pharmacie ou les gros semenciers de la planète. Ce n'est pas un combat scientifique, a fortiori ne le fera-t-on pas avancer par des arguments scientifiques outranciers ou exagérés : Linux n'a pas toutes les vertus et Windows n'a pas tous les défauts.

   Ne nous trompons pas de combat : le premier que nous autres informaticiens avons à mener est celui de l'enseignement à tous d'un savoir et d'un savoir-faire informatique suffisant à tous.

   Je pense que la prospérité de la France après la fin de la deuxième guerre mondiale, au cours de ce que l'on a appelé les trente glorieuses, a été d'abord assurée par un très bon niveau de nombreux ingénieurs et techniciens, bien formés dans nos universités et écoles aux sciences qui étaient à l'époque utiles aux grands chantiers d'équipement et aux industries mécaniques, automobiles, aéronautiques, ferroviaires, électriques, nucléaires, chimiques, pharmaceutiques. Aujourd'hui où, clairement, l'innovation dans tous les domaines que nous venons de citer plus quelques nouveaux domaines comme les biotechnologies, l'imagerie médicale ou l'environnement, passe par l'informatique, il me parait essentiel de donner à tous nos ingénieurs et techniciens le meilleur niveau possible en informatique.

   Ce qui me désole le plus c'est que nous ayons toute une population de jeunes de 12 à 18 ans qui sait fort bien manier la souris à 12 ans, même parfois bien avant. Ces gamins et gamines sont à l'âge où ils se construisent, où ils commencent à imaginer ce qu'ils feront plus tard, où naissent, quand elles naissent, les vocations. Et souvent personne ne leur montre que les ordinateurs peuvent servir à autre chose qu'à jouer, à échanger par « messenger » des messages bourrés de fautes d'orthographe avec leurs copains ou à découvrir la pornographie sur internet.

   Dans les collèges et lycées, une minorité de professeurs de toutes disciplines s'y essayent bien et leurs efforts sont très méritoires, mais ils restent une minorité face au plus grand nombre qui se sent toujours, faute de formation suffisante, et peut-être aussi de motivation, toujours mal à l'aise pour utiliser l'informatique avec et pour leurs élèves. Que de talents, qui ne demanderaient qu'à être développés, perdus, que de créativité gâchée, que de vocations manquées !

Maurice Nivat
Membre de l'Académie des Sciences
Mars 2008

Le présent texte correspond à l'intervention de M. Nivat à la table ronde « Culture et enseignement informatiques dans l'enseignement scolaire » organisée par le groupe ITIC-ASTI, le 2 avril 2008 après-midi, dans le cadre des 13èmes Rencontres de l'Orme à Marseille.

___________________
Association EPI
Mars 2008