Outils, machines et informatique Maurice Nivat À la mémoire de Robin Milner et Amir Pnueli I. Des outils moins simples qu'on ne le croit Les outils jouent un rôle fondamental dans toutes les sociétés et ce depuis les temps préhistoriques les plus reculés depuis que l'homme est devenu homo faber, l'homme qui fabrique. Un outil, une pioche, une bêche, un marteau, ce n'est pas qu'un objet, c'est le fruit d'une réflexion sur des matières à travailler, des actions que l'on peut effectuer sur cette matière, et une gestuelle pour manier l'outil, pour effectuer les actions nécessaires à l'obtention d'un certain résultat. Même si chez le manieur d'outil l'expérience et l'instinct qu'elle a induit l'emporte souvent sur la réflexion consciente, avant tout maniement de l'outil approprié, il convient de savoir ce que l'on veut faire et concevoir une suite de gestes qui permettront d'obtenir le résultat voulu. Et rien ne ressemble plus à un programme informatique que la description de la suite des gestes que l'ouvrier (au sens propre, de celui qui oeuvre) doit effectuer. Voici un extrait du Manuel de la coupe des pierres de L. Mugnier, Librairie J.B. Baillère & fils, Paris 1923 : Ce manuel fait 270 pages, la bibliothèque professionnelle de Baillère & fils comporte 150 titres du même tonneau, de petit format, faciles à transporter avec soi sur un chantier. La similitude avec un programme informatique est manifeste dans l'emploi de tout un vocabulaire pour désigner à la fois l'objet des transformations à opérer, ici la « pierre » qui a des faces et des bords, et les transformations elles mêmes, ici les « plumées » dans un langage plus ou moins ésotérique incompréhensible à celui qui ne le connaît pas et qu'il convient donc d'apprendre. Les manuels professionnels, les modes d'emploi d'outils divers, les manuels d'entretien ou de réparation de machines, les livres de cuisine, les livres de conseil en jardinage sont légions, toutes les techniques possibles et imaginables ont donné naissance à une littérature du même genre, chacune ayant engendré son langage par adjonction au français d'éléments du vocabulaire et d'abréviations, généralement pour désigner des opérations déjà complexes et répétitives que l'on définit une fois pour toute et que l'on utilise ensuite comme une « procédure » ou un « sous-programme » dans un programme informatique. II. Des machines déjà fort complexes Les outils se sont compliqués et il est apparu des machines, c'est-à-dire des outils qui utilisent une force autre que celle de l'ouvrier, celle d'un animal, ou la force hydraulique d'une roue de moulin. Une machine est un outil qui « marche »ou qui « fonctionne », plus ou moins tout seul, bien que l'on puisse classifier les machines en automatiques, celle que l'on met en marche et qui ne s'arrêtent plus qu'une fois le travail achevé et semi-automatiques qui nécessitent l'intervention constante d'un opérateur humain. Les machines qui ont sans doute le plus étonné le monde sont les automates de Jacques de Vaucanson au début du dix-huitième siècle, le joueur de flûte, le joueur de gaboulet et le canard qui digère. Vaucanson, compagnon soyeux, était un mécanicien de génie qui avait fait de fortes études de mécanique appliquée et d'anatomie et avait entrepris de construire des machines qui fassent la même chose qu'un homme ou un animal. Le succès de ses premières machines lui a valu la charge d'inspecteur des soieries royales dans laquelle il a inventé et mis au point plusieurs machines fort utiles dans le travail de la soie. On peut dire que c'est le premier des roboticiens. Les automates de Pierre Jaquet-Droz que l'on peut voir au musée de Neuchâtel, en particulier l'automate écrivain, construits vers 1780, contiennent plus explicitement que ceux de Vaucanson un programme que l'on peut modifier avant de lancer la machine qui exécute alors ce que le programme lui dit de faire. Et c'est peu après en 1801 que Joseph-Marie Jacquard, fils de canut lyonnais, invente le métier à tisser qui porte son nom et qui va révolutionner toute l'industrie textile : un véritable programme enregistré sur un rouleau de carton perforé, analogue à celui d'un orgue de barbarie, permet d'effectuer la sélection des fils de chaîne et autorise la fabrication des motifs les plus compliqués. Les machines à tisser ou tricoter modernes sont des perfectionnements du métier Jacquard : si l'on veut voir d'extraordinaires machines, comme celle à tricoter douze paires de chaussettes à la fois il faut aller au musée de la bonneterie dans l'hôtel de Vauluisant à Troyes en Champagne. Les boites à musique, encore fabriquées de nos jours, sont aussi des machines à programme, celui-ci revêtant la forme d'un cylindre hérissé de petites excroissances qui lorsque le cylindre tourne soulèvent les lames vibrantes produisant les sons : la première de ces boites semble avoir été décrite en 1796 par un certain Antoine Favre dans un mémoire présenté au Comité de Méchanique de Genève. Ainsi, dès le début du dix neuvième siècle ; la notion de machine programmable est non seulement acquise mais opérationnelle : quand on la met en marche, la machine effectue seule le travail de un ou plusieurs ouvriers, travail défini par un programme que l'on a écrit et enregistré sur un cylindre ou sur des cartes perforées et l'on voit bien que le progrès par rapport à un outil à main ou une machine strictement répétitive qui ne sait effectuer qu'une opération ou une série d'opérations est considérable. Et l'ordinateur n'est pas loin : la machine analytique du mathématicien anglais Charles Babbage que l'on peut voir au musée des Sciences de Londres n'a pas été construite du vivant de son inventeur mais pour célébrer le deux centième anniversaire de sa mort en 1991. Elle est construite dans le fidèle respect des plans de la machine n° 2 de Babbage, datant de 1836, plus économique que la machine n° 1 ; la machine des différences qu'il avait présentée à la Société Royale en 1823. Tous les composants d'un ordinateur moderne sont là, unité centrale, entrées-sorties, mémoire, programme enregistré : la machine était destinée au calcul des polynômes et à l'élaboration de tables de logarithmes. Ce qui manque et distingue radicalement la machine de Babbage de nos ordinateurs c'est la possibilité pour la machine de modifier son propre programme. III. Vers l'ordinateur Le dix neuvième siècle est le siècle de la vapeur, de la métallurgie, de la mécanique, des engrenages, des turbines. Des sciences se constituent ou s'affirment et les machines se multiplient tout en devenant de plus en plus sophistiquées. En particulier on apprend à les réguler : on les règle à la main avant de les mettre en route, les possibilités de réglage augmentent considérablement et on invente des régulateurs automatiques dont le plus célèbre est le régulateur à boules qui empêche les machines à vapeur de s'emballer et maintient leur vitesse constante. C'est James Watt le célèbre inventeur anglais du système bielle-manivelle qui invente aussi ce régulateur, premier exemple de rétroaction, utilisé dans l'industrie et première pierre de ce que deviendront plus tard l'automatique et la cybernétique. De toute façon les très grosses machines doivent être contrôlées en permanence, que ce soit un haut fourneau, un laminoir, une coulée de glace en continu, une colonne de distillation : ce contrôle peut être exercé par des humains qui ont sous les yeux des cadrans sur lesquels autant de capteurs indiquent la valeur d'un paramètre de la machine en fonctionnement, une vitesse, une température, une pression et aussi des valeurs de paramètres de l'environnement susceptibles d'influer sur la bonne marche de la machine. Dès qu'un capteur indique une valeur anormale l'opérateur humain agit sur des commandes qui sont à sa disposition comme autant de manettes pour ramener le paramètre à la normale ou tenir compte de la valeur d'un paramètre extérieur. Et évidemment l'on cherche à automatiser tout ce qui peut l'être, c'est à dire faire en sorte que ce soit la machine elle même qui détectant la valeur anormale du paramètre prend les mesures propres à le ramener à la normale sans intervention humaine. Tout au long du siècle qui va de 1850 jusqu'à l'avènement des ordinateurs modernes la régulation est essentiellement semi automatique mélangeant automatismes véritables et interventions humaines : le meilleur exemple est la machine que constitue par exemple la voie de chemin de fer de Paris à Orléans et la cinquantaine de trains qui y circulent en permanence. Toute une signalisation automatique permet au conducteur de savoir si la voie est libre et à quelle vitesse il peut rouler : ce n'est pas automatique car c'est le conducteur qui arrête le train et le fait repartir et non le train qui s'arrête et repart de lui-même. En plus il y a une cellule de gestion centralisée (je l'ai visitée en 1960, au premier étage de la gare d'Austerlitz) ou des employés tiennent à jour en permanence la position des trains à partir d'informations envoyées par téléphone par les chefs des gares du parcours : cette cellule n'intervient pas en marche normale, si tous les trains avancent à la vitesse voulue pour respecter un horaire préétabli, mais elle intervient dès qu'un incident se produit, ralentissant un train ou l'immobilisant sur la voie. Il convient alors de prendre des décisions pour pouvoir écouler le trafic au mieux, compte tenu de cet incident, en faisant se ranger des trains lents pour autoriser le passage du rapide arrivant de Bordeaux qui a une priorité absolue. Beaucoup d'incidents sont résolus sans beaucoup de mal et de temps en temps un incident plus grave, impliquant plusieurs trains, immobilise tout le système et peut demander beaucoup de temps avant que le trafic puisse être rétabli. Le triangle de Gagny est un cas d'école : trois voies très fréquentées s'y croisent en formant un petit triangle et il faut assurer un trafic maximum en évitant bien évidemment tout risque de collision. Je ne sais pas si aujourd'hui la voie Paris-Orléans et le triangle de Gagny sont gérés de façon entièrement automatique, ce qui voudrait dire qu'une machine prendrait en compte même les catastrophes, déraillement d'un train faisant plusieurs morts et bloquant tout le trafic, organisant aussi bien les secours que le déroutement des autres trains en circulation. Vers 1870 à Chicago, des gens se sont mis à essayer de résoudre des problèmes d'une autre nature, problèmes de gestion de stocks d'une entreprise ou d'un magasin, problèmes de comptabilité, problèmes de statistiques, problèmes de rangement du nombre considérable de documents et de bordereaux qu'engendrent la gestion de ces stocks et leur commercialisation. En 1890 Hermann Hollerith, chargé du recensement de la population aux États-Unis utilise comme support de l'information concernant chaque citoyen la carte perforée à quatre vingt colonnes, que l'on appelle parfois carte Hollerith, et des machines pour les lire , les trier ou les ranger, extraire d'un paquet de cartes celles qui présentent certaines caractéristiques etc. La mécanographie est née et va prendre une extension considérable grâce à trois grandes compagnies, IBM qui est l'héritière de l'entreprise de Hollerith, la Remington Rand Corporation et en France la compagnie Bull. Cette dernière compagnie porte le nom de l'ingénieur norvégien Fredrik Bull qui a fondé une entreprise en Norvège en 1920, entreprise qui à sa mort prématurée en 1925 devient suisse puis vers 1930 française, à capitaux majoritairement français. La crise de 1929 est bénéfique pour la mécanographie car elle apparaît comme un des moyens de rationaliser le travail dans de très nombreux commerces, entreprises ou administrations. Il semble que l'armée allemande, qui s'était équipée en matériel mécanographique, a pu grâce à cela mobiliser ses troupes et leur matériel beaucoup plus rapidement que l'état-major français qui ne croyait pas en la mécanographie. Il faut noter que les machines mécanographiques étaient dotées de circuits logiques à lampes pour effectuer des calculs booléens et que tout cela avait fait se constituer une Théorie de la commutation (nous traduisons ainsi Switching Theory) qui était loin d'être nulle ou triviale et qui servait aussi à la conception des centraux téléphoniques électromécaniques. La mécanographie, mais aussi le télégraphe et le téléphone ont introduit l'habitude de manipuler l'information sous forme codée par des suites de symboles dénués de signification. Le code Morse du nom de son inventeur, Samuel Morse, vers 1835, n'a même pas complètement disparu à l'heure d'internet, certaines fréquence radios restent réservées à la communication en Morse, considéré par les militaires comme un système de secours. Même des images traversaient l'Atlantique, par le câble sous marin sous la forme de belinogrammes : le belinographe, qui porte le nom de son inventeur Édouard Belin, a été utilisé par les photographes de presse depuis son invention en 1907 jusque dans les années 1970. Placée sur un cylindre la photo est analysée par une cellule photo électrique qui transforme les niveaux de gris en fréquences : à l'autre bout un cylindre semblable porte du papier photographique que l'on éclaire avec une intensité dépendant de cette fréquence. L'envoi d'une photo 10x15 pouvait prendre douze minutes. V. Premiers ordinateurs, théorie de l'information et cybernétique Les premiers ordinateurs naissent modestement vers 1940, le tout premier à programme enregistré et logique binaire, construit en 1937 par Konrad Zuse, ingénieur allemand est suivi, en 1943 par celui de l'américain Aiken. En 1944, le physicien théoricien John von Neumann décrit la première architecture dite de von Neumann qui a triomphé et est celle de l'immense majorité des ordinateurs aujourd'hui. La nouveauté, essentielle, est que le programme est stocké dans la même mémoire que les données et est ainsi susceptible de calcul, ce qui permettra dans les années soixante l'écriture de compilateurs pour des langages symboliques de programmation de haut niveau et le véritable essor de l'informatique. Claude Shannon en définissant et quantifiant en 1947 la notion d'information fonde la théorie du même nom et ouvre la voie à des progrès substantiels dans de nombreux domaines cruciaux comme celui du codage et du cryptage ; D'une certaine façon c'est grâce à lui que s'impose l'idée que toute information est représentable par une suite de bits, qui ayant triomphé, fait que l'on peut parler aujourd'hui de la numérisation du monde. C'est l'unification de la représentation binaire de toute l'information qui circule dans le monde qui est la source de l'incroyable succès de l'informatique : nous nous sommes habitués à la forme numérique qu'ont pris tous les textes, toutes les images, toute la musique mais la numérisation ne s'arrête pas là. Par exemple la pression exercée par le pied de l'automobiliste sur la pédale de frein est une information qui, jadis, se transmettait par voie mécanique, c'est à dire un système de tringles, aux mâchoires du frein. Aujourd'hui numérisée cette même information est transmise au frein par voie électronique et elle peut en chemin être modifiée, si par exemple, des capteurs indiquent à la voiture que le sol est glissant et que le coup de frein, donné par le conducteur induit un risque de dérapage. L'idée de mettre l'information au centre de la machine revient au flamboyant mathématicien Norbert Wiener qui lors d'un congrès inaugural, à Paris en 1951 fonde la cybernétique, science de toutes les machines, ou celles ci sont définies comme tous les appareils (en anglais devices) qui transforment une information d'entrée en une information de sortie. Le succès des idées émises par Wiener est immense et alimente une vaste littérature, souvent tout à fait excessive : on annonce la création de cerveaux non humains et de robots intelligents, de façon certainement prématurée. Victime des espoirs qu'elle avait fait naître trop tôt et de la personnalité de son auteur qui supporte mal les critiques et fustige à l'envie ses détracteurs, la cybernétique disparaît pratiquement du discours scientifique et technique : la machine intelligente et autorégulée que concevait Wiener s'efface au profit de l'ordinateur qui en est un peu l'antithèse, dans la mesure où il ne sort rien de l'ordinateur que ce que l'on y a mis au préalable et où il ne prend pas d'initiative. Les idées de Wiener sont un peu reprises par l'intelligence artificielle, mouvement lancé par John Mac Carthy en même temps que son langage de programmation, Lisp, qui est assez orthogonal aux autres et que l'on mettra beaucoup plus longtemps à comprendre et à savoir compiler. Le terme « intelligence artificielle » est malheureux, car l'intelligence que l'on peut mettre dans la machine n'a rien d'artificiel, c'est l'intelligence de l'homme qui écrit le programme en fonction duquel la machine prendra au vu de la situation dans laquelle elle se trouve et de son environnement la décision prévue. Mais l'intelligence artificielle a mis beaucoup de gens au travail sur des sujets qui se sont révélés très utiles et féconds : étude des interactions entre l'homme et la machine, ergonomie de la machine, collecte et archivage de savoir-faire sous forme de systèmes experts ou ensemble de règles destinées à savoir quoi faire dans telle ou telle situation. Oubliée, la cybernétique, quelque peu décriée (beaucoup parce que survendue), l'intelligence artificielle ont toutes deux beaucoup contribué aux rapports actuels de l'informatique avec les machines. VI. Informatique et machines aujourd'hui La donnée essentielle est qu'il y a beaucoup plus de puces électroniques dans les machines de toutes natures que dans les ordinateurs en service à la surface de la planète. Car toutes les machines en contiennent et leur nombre va croissant. Une grande partie de l'innovation technologique consiste à informatiser, à l'intérieur des machines, des fonctions qui ne l'étaient pas, soit pour améliorer les performances, soit pour augmenter la fiabilité, soit pour confier à la machine des opérations qui étaient jusqu'alors confiées à l'opérateur humain conduisant ou utilisant la machine, soit pour ajouter des capteurs qui améliorent la connaissance de l'état de la machine ou bien la connaissance de l'environnement dans laquelle elle fonctionne. Comme corollaire l'informatique emploie de plus en plus d'informaticiens, par exemple, il y a désormais une majorité d'informaticiens dans le groupe THALES, dont le métier n'est pas l'informatique. Il en découle pour la plupart des machines que nous utilisons des performances accrues, un plus grande fiabilité, une meilleure résistance aux pannes et à l'usure (toutes les transmissions électroniques d'information n'engendrent pas de frottement donc pas d'usure), un maniement plus commode, une diminution de l'intervention humaine, un réactivité plus grande et rapide aux incidents qui peuvent se produire. Quant aux grands systèmes, ou aux systèmes très rapides, avions de ligne, trains à grande vitesse, centrales nucléaires, rampes de lancement de fusées il ne se conçoivent plus sans informatique, car ils seraient sans elle totalement ingérables, et même probablement inconcevables, l'informatique étant aussi indispensable à la conception et à la réalisation d'objets aussi complexes. Historiquement on peut distinguer plusieurs phases dans le développement de l'informatique « utile » : utile, ustensile, outil proviennent du même mot latin utilis, signifiant « qui sert » et je propose que l'on appelle informatique utile, cette informatique qui n'est pas elle même un outil mais qui sert à fabriquer de nouveaux outils et à en perfectionner des anciens, l'informatique invisible qui est dans l'outil dont on se sert mais que l'on ne voit pas. Jusqu'en 1960 les ordinateurs étaient vraiment des curiosités rares et très difficiles à utiliser. De 1960 à 1980 les ordinateurs sont encore gros, lourds, chers mais grâce aux langages de programmation que l'on apprend à compiler entre 1960 et 1970 leur usage se répand aussi bien dans le monde scientifique que dans celui de la gestion, Les bases de l'algorithmique et de la programmation sont posées et une foule d'algorithmes sont inventés ou découverts pour résoudre les problèmes les plus divers. À partir de 1980, la miniaturisation des circuits, qui fait qu'une unité centrale tient sur un centimètre carré de silicium, permet la fabrication d'ordinateurs de bureau ou portables qui depuis gagnent chaque année en vitesse et en puissance. Mais une autre conquête de l'informatique à partir de 1980 à peu près est la programmation en temps réel et répartie : on ne s'était guère occupé jusque là que de programmes séquentiels exécutables par un ordinateur monoprocesseur calculant à son rythme un résultat. Les programmes destinés à faire coopérer plusieurs processeurs ou agents, comme des capteurs, ou des pièces mécaniques, sont d'une toute autre nature : d'abord ils ne sont généralement pas destinés à s'arrêter, ensuite ils doivent de façon essentielle tenir compte du temps, c'est à dire synchroniser les divers agents qui composent le système. Le programme de contrôle d'un système mécanique comme un moteur d'avion est typiquement un tel programme. Amir Pnueli et Robin Milner ont tous deux été des pionniers de cette informatique temps réel ou embarquée qui a permis de concevoir et réaliser les plus étonnantes et les plus sophistiquées des machines actuelles. VII. Conclusion Le rapport de l'informatique aux outils et aux machines est si profond que l'on peut dire que science du calcul l'informatique est aussi science de l'outil et science de la machine. Le calcul n'est pas seulement numérique comme l'usage du mot en français tend à le faire croire : l'homme préhistorique qui débitait sans doute par percussion un bloc de silex en lames de rasoir au tranchant aussi acéré que celui des rasoirs en acier de Solingen calculait, il calculait son coup, la trajectoire de la masse qu'il utilisait pour frapper le bloc à tailler, il choisissait le point d'impact et la force à donner au coup. Nous calculons à vrai dire tout le temps, et en particulier chaque fois que nous décidons d'utiliser un outil ou une machine pour faire quelque chose, quoi que ce soit, nous calculons ce que peut faire l'outil en fonction du but que nous cherchons à atteindre. L'intérêt fondamental de l'informatique est de fournir les concepts de base et des méthodes pour expliciter ces calculs et dans de nombreux cas nous aider à les faire, parfois les faire à notre place. Il n'y a rien d'artificiel là dedans ni même de mystérieux ; pour faire quelque chose l'homme doit avoir une information précise sur ce qu'il veut faire, les matériaux et les outils qu'il peut utiliser, il doit concevoir une suite d'opérations qui lui permettront d'atteindre le résultat voulu, c'est-à-dire un algorithme, il doit construire son programme de travail ou d'action et le formuler dans un certain langage, il doit enfin exécuter ce programme. L'informatique ne fait que tenter de préciser le sens des mots soulignés. Mais c'est en faisant cela qu'elle a déjà beaucoup transformé notre monde et que, manifestement, elle va continuer à le faire. Maurice Nivat ___________________ |