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
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 :
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 :
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 :
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 :
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 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. ___________________ |