L'informatique libère l'humain
1. Du Big Bang à l'Hypermonde.
L’autonomie des données
Développements ultérieurs (en anglais) sur la mesure, les modèles, les représentations.
Mais la dématérialisation se traduit par une autre coupure, radicale elle aussi. La structure se détache du matériel pour se traduire dans le logiciel. Le matériel n'est plus que le support, a priori "vide", le "contenant" d'une information, d'un "contenu", qui devient l'essentiel.
Ce contenu peut, dans une certaine mesure, rester analogique. Le disque de cire, de vinyle, la bande magnétique du magnétophone, enregistrent le son d'une manière non codée, par simple traduction d'une énergie sonore instantanée par une densité de magnétisation. Mais les contenus vont vers la digitalisation, le logiciel, par le même mouvement que les matériels. L'écriture témoigne de cette série de coupures constitutives d'une indispensable digitalisation.
Les données. Définition
L'opposition entre données et programmes tient aux origines à la fois mathématiques, mécaniques et industrielles, de l'informatique. Le mathématicien distingue clairement les opérandes et les opé-rations. Et l'industriel ne confond pas ses machines avec les maté-riaux qu'elles transforment en produits. La transposition était tout à fait normale pour les machines mécanographiques des années 1890-1970, où les données étaient perforées sur les cartes et les programmes exprimés par la succession des opérations sur les machines ou la disposition de leurs "tableaux de connexion".
Avec le calcul scientifique et les premiers calculateurs élec-troniques, la distinction tenait toujours. Mais il devenait important de pouvoir changer constamment les opérations pour traiter des problèmes nouveaux, tester de nouvelles équations... et il fallait donc entrer les opérations dans la machine aussi facilement que les opérandes. Une des caractéristiques de l'ordinateur est précisément de considérer que données et programmes passent par les mêmes voies d'entrées et de sorties, et qu'au cœur de la machine, entre le circuit fondamental de calcul (unité arithmétique et logique) et ses mémoires élémentaires (registres), données et programmes ne se différencient plus que comme des numéros qui correspondent tantôt à des codes d'opérations, tantôt à des adresses en mémoire.
On n'imaginait pas, au départ, que la description des opérations, le logiciel, prendrait une telle importance. Le mot même de software (traduit en français, bien longtemps après sa naissance, par logiciel) fut lancé aux Etats-Unis comme un sobriquet, à peu près aussi péjoratif que bug (bogue) pour les pannes.
Les données évoluent quantitativement tout d'abord en représentant une part toujours plus grande de ce que nous savons sur le monde et la planète Terre en particulier, sur ses caractéristiques et les objets qu'elle contient. Pratiquement tout homme aujourd'hui figure quelque part dans au moins un fichier... et dans un nombre de plus en plus grand de fichiers, créés pour des raisons politiques (recensement, élections), sociales (santé, retraite), commerciales, associatives.
Montée des données en complexité
Les données évoluent aussi, comme toutes les entités, vers plus de complexité, de digitalisation, d'autonomie et decohésion. Et le tout va de pair. Les représentations de chaque entité s'étoffent en nombre de bits. Les premiers recensements ne pouvaient employer qu'une demi-douzaine de cartes perforées par personne, soit quatre ou cinq cents caractères. Les fichiers actuels du fisc, de la sécurité sociale ou des banques enregistrent l'ensemble de l'historique de nos relations avec ces institutions. Cet accroissement du nombre de bits ne peut rester gérable que si les structures de données se per-fectionnent, si les données s'organisent en "bases", de manière à se rendre exploitables, en pratique.
Des données de plus en plus digitales
Les données sont de plus en plus digitales, en ce sens que les premières codifications, tout en n'étant plus analogiques à propre-ment parler, restaient proches des paramètres habituellement maniés dans les processus classiques. En France, le "code de sécurité sociale", c'est-à-dire le matricule national instauré par Vichy et conservé jusqu'aujourd'hui, est un code "significatif" : il se décompose en une suite de "zones" représentant le genre (masculin/féminin), le mois et l'année de naissance, le département, la commune et le numéro d'enregistrement dans la commune.
Les codes significatifs ont l'avantage de se prêter facilement aux traitements pour lesquels ils ont été prévus, mais si l'on va trop loin, ils sont lourds, contraignants, parfois inadaptés. La logique de l'histoire conduit donc vers des codes non significatifs, avec des tables et des codes de traduction pour les rendre significatives au moment de leur utilisation par une machine ou par un humain.
En pratique, le choix des codes est toujours un compromis. Une partie de la signification, par exemple, reste intégrée à la donnée elle-même. Une autre est donnée par un préfixe situé juste avant elle. Une autre partie enfin vient de tables enregistrées. Digitalisation et complexité se soutiennent l'une l'autre.
Des données toujours plus cohérentes
Les données progressent aussi en cohésion, pour des raisons d'économie d'abord, car leur création et leur stockage coûtent cher, et il faut éviter les doubles emplois, donc les regrouper. Cela oblige, ici encore, à monter en complexité, puisqu'il faut prendre des codes assez longs pour décrire des ensembles de plus en plus vastes. Il suffit en théorie de quatre chiffres décimaux pour coder tous les citoyens d'une ville de 10 000 habitants. Il en faut huit pour soixante millions d'habitants, et treize pour les six milliards qui peuplent la planète. En pratique, les longueurs seront plus grandes encore, car différentes raisons éloignent de ces minima. La cohésion est imposée aussi par l'efficacité de l'action. Si les données concernant un client sont gérées de manière anarchique en dix endroits différents d'une même entreprise, elle ne parviendra jamais à adopter une attitude cohérente et proactive à l'égard de ce client.
Autre exemple de cohésion: les systèmes de représentation des caractères alphabétiques. Certaines machines primitives, notam-ment les premiers microprocesseurs, codaient les données par "mots" de quatre bits, qui suffisent pour stocker soit une valeur numérique faible (entre 0 et 15), soit un chiffre décimal codé. Au cours des années 60 et même 70, se sont développées des machines à mots de 6 bits (128 valeurs), qui permettaient de stocker tout l'alphabet, les chiffres et quelques caractères spéciaux. Puis, à la fin des années 60, IBM proposa et finalement réunit un consensus autour de l'octet, mot de 8 bits. On tend aujourd'hui à passer à un code de 16 bits, qui a l'avantage de donner de la place pour l'ensemble des alphabets, y compris ceux des langues orientales.
L'allongement des numéros de téléphone illustre bien aussi le prix qu'il faut payer pour passer d'une population de quelques abonnés locaux à des centaines de millions d'abonnés sur la planète entière. Ce renforcement de cohésion des données au sein du système d'information d'une entité sociale, entreprise ou Etat, constitue en soi un accroissement de pouvoir. Il peut donc être jugé souhaitable de limiter cette cohésion. C'est ce qu'a fait en France loi de 1978 Informatique et Libertés, en soumettant à des conditions très sévères l'utilisation du code de sécurité sociale.
Pourquoi une autonomie des données ?
Les données, par elles-mêmes, n'ont rien d'autonome, puisqu'elles n'ont de sens que pour des programmes. Mais différentes raisons conduisent à leur donner une certaine forme d'autonomie, d'abord, pour les prémunir contre les défauts des supports où elles sont stockées ou des liens de communication quand on les transmet. On peut commencer par doubler ou tripler les stockages ou les transmissions. Mais cela ne donne que des garanties limitées et coûte cher, d'où le développement, dès les débuts de l'informatique (années 60) de codes "redondants", un peu plus longs que néces-saire, mais utilisant un certain nombre de bits supplémentaires pour détecter les erreurs (nous en connaissons des exemples pratiques dans les "clés de contrôle" de nos numéros de comptes bancaires ou de sécurité sociale), voire pour corriger automatiquement certaines erreurs avec les codes auto-correcteurs.
Il va de soi que ces codes éloignent encore un peu plus des codes analogiques et significatifs. Un des avantages de l'octet, par exemple, est qu'il permet de réserver un bit dit "de parité" au contrôle des 7 autres, suffisants pour la plupart des applications.
Mais, pour devenir utilisables par un nombre de plus en plus large de programmes, les codifications doivent aussi se conformer à des standards, qui procèdent souvent par l'emploi de préfixes : quelques caractères pour dire de quoi on va parler, quelques caractères pour donner la valeur correspondante. Cette méthode se retrouve aussi bien dans la codification Edifact (utilisée pour les échanges de données entre les entreprises ou avec les administrations) ou Midi (pour le pilotage des synthétiseurs musicaux) que dans les proto-coles de télécommunications et de messageries.
Dans quelques cas, enfin, la codification s'éloigne encore de l'analogique pour aller vers le complexe et l'autonome, afin de donner des garanties de sécurité aux transmissions, grâce au chiffrement (cryptologie).
Trop de données ?
Un des problèmes de cette fin du XXème siècle est de protéger l'individu contre la trop grande masse des données. En matière géographique, par exemple, la carte devient plus grande que le territoire. Non seulement elle a atteint l'échelle Un, mais elle la dépasse avec la macro-photo, la micro-photo. Non seulement elle est constamment remise à jour, mais elle garde trace de tous les états antérieurs. Elle ne se contente pas de noter les états réels, elle offre les mille possibilités d'aménagements que nous pouvons ima-giner, et les aménagements de mille autres univers. La carte devient plus importante que le territoire et, pourquoi pas, plus réelle même.
Jusqu'où ira-t-on ? Jusqu'où peut-on aller ? Combien de bits de données l'univers, ou au moins la Terre, peut-il porter ? Cela a des conséquences en particulier pour les personnes. Il faut de toute façon prendre conscience de l'énorme quantité de données stockée sur chaque individu et disponible de plus en plus facilement par un nombre croissant d'autres personnes et par un nombre encore plus grand de programmes plus ou moins contrôlés.
A la limite, la contribution majeure d'un individu au développement de la planète consiste désormais, tout simplement, à laisser les machines, l'ensemble des machines, s'informer en détail de ce qu'il fait, sinon de ce qu'il est.
Globalement, cette abondance de données dépasse de façon toujours plus inquiétante - ou stimulante - ce qu'un cerveau humain peut contenir, et même tous les cerveaux humains réunis. On s'informe, et les jeunes se forment (ou au moins s'informent) désormais plus avec la télévision et Internet, sans oublier les livres, qu'auprès de leurs parents, supérieurs hiérarchiques et enseignants.
Les programmes
Comme les données, les programmes sont des objets purement binaires. Leur montée en complexité s'exprime donc directement par la croissance de leurs dimensions, d'autant plus que l'accroissement quantitatif (en nombre de lignes de programme, par exemple), appelle des structures de plus en plus élaborées pour les rendre un tant soit peu compréhensibles et gérables.
La mesure du logiciel a fait couler beaucoup d'encre. On peut mesurer le nombre de lignes ou de caractères écrits dans un langage de programmation (code source) ou le nombre de lignes obtenues après traduction (compilation) dans le langage de la machine (code exécutable). Dans les années 1950-60, ces longueurs se comptaient en milliers de caractères, en millions aujourd'hui, sinon en milliards.
C'est surtout pour des raisons économiques que l'on a étudié ces longueurs, afin de prévoir les coûts et les délais d'exécution des projets avant d'en décider le lancement et d'évaluer les budgets nécessaires. Les résultats de ces recherches n'ont jamais totalement convaincu. Cependant la méthode des "points de fonction" est assez largement utilisée. Ce qui est plus apparent, c'est la montée en complexité des structures du logiciel.
Du langage "machine" à la programmation "objets"
Historiquement, la facilité de programmation passe par une sorte d'optimum au début des années 1980, quand le Basic devient à la fois un esperanto et un passe-temps presque mondain. Jusque-là, le prix des machines (et, à un moindre degré, la difficulté des langages) en écarte les amateurs. Ensuite, cet âge d'or prend fin, avec l'arrivée du Macintosh, Windows et autres interfaces "convi-viales". Elles séparent radicalement les utilisateurs de jeux et d'outils "bureautiques" (traitement de texte, tableur, outils de dessin) devenus très faciles à mettre en oeuvre, des programmeurs professionnels. C++, même dans sa version "visual", ne peut concerner que des personnes qui y consacrent le plus clair de leur existence. Tous les programmes sont de grandes machines, et l'ensemble du logiciel des grandes firmes une forêt vierge où même les natifs se perdent. On l'a bien vu avec l'arrivée de l'An 2000, qui oblige à de grands travaux de défrichage et d'arpentage avant tout travail d'adaptation.
Les programmes réellement exécutés par les machines ne sont plus directement accessibles. Pour les écrire, les modifier ou comprendre leurs fonctions, on ne peut se passer d'outils élaborés, au service du "génie logiciel" et des méthodologies. Allant dans la voie d'une certaine autonomie, les composants de programmes se sont peu-à-peu organisés en fonctions ou procédures, sous-programmes, modules, bibliothèques (DLL...) et plus récemment en objets, et plus précisément en classes d'objets, regroupant des programmes et des caractéristiques de données que les programmes réels se contentent d'instancier quand ils se mettent à fonctionner. On retrouve ici une forme de "concrétisation".
L'autonomie des objets ou des bibliothèques d'objets s'affirme d'autant mieux qu'ils peuvent se stocker et se communiquer de système à système, au point que leur circulation peut être gérée par des "courtiers en objets" (object brokers), pour peu qu'ils se plient à certaines normes de conditionnement et de présentation, comme les poireaux et le yaourt dans les supermarchés.
L'autonomie progresse encore quand ces objets sont capables de s'animer presque d'eux-mêmes à la demande de leur environnement, comme les "applettes" écrites en Java et téléchargées sur tout poste de travail qui utilise Internet ou ses protocoles.
L'autonomie générale du logiciel
Le logiciel, d'une manière générale, progresse en augmentant son autonomie.
Indépendance par rapport aux matériels
Le progrès des matériels informatiques permet au logiciel de consommer de moins en moins d'énergie et de se concentrer sur des surfaces de silicium ou de support magnétique de plus en plus petites. Il réduit donc sa dépendance exactement comme le tran-chant des outils de silex à la préhistoire. Il est vrai que sa capacité de croissance est telle qu'il pousse toujours à la construction de machines plus puissantes. Mais cela n'est pas contradictoire avec une indépendance du logiciel par rapport à telle ou telle machine déterminée. Le logiciel en effet se rend indépendant du type même des matériels sur lesquels il fonctionne. Données, texte, images et programmes doivent pouvoir s'utiliser sur toutes les machines.
Cette indépendance passe par une montée en complexité : la struc-turation du logiciel en "couches". Au plus près du processeur, le Bios et le système d'exploitation se chargent de masquer les spécificités de la machine, en les cachant derrière un ensemble de fonctions qui apparaissent comme semblables à tous les utilisateurs (qu'il s'agisse d'êtres humains ou d'autres programmes). Au lance-ment de la machine, ces couches de base se chargent aussi de reconnaître la configuration matérielle effectivement présente, de s'y adapter ou, le cas échéant, de demander à l'utilisateur ses instructions pour en tenir compte (plug and play).
Indépendance par rapport au lieu
Le logiciel devient aussi indépendant du lieu matériel de son implantation. Peu importe qu'il soit dans le disque qui tourne sur le bureau ou sur un serveur à l'autre bout de la planète.
En fait, cette localisation même se décompose. La base de données et les applications, par exemple, se partagent entre le poste client (celui qui est devant l'utilisateur), un serveur de traitement et un serveur de données. Du moins cette architecture en trois couches est-elle le fin du fin à la fin du XXème siècle, en attendant mieux, sûrement.
Le mot même de "localisation" change de sens. Quand il s'agit d'un logiciel, le problème n'est plus sa position géographique, mais son adaptation à la langue, aux images et à la culture d'une communauté. Celle-ci, bien entendu, a ses attaches locales (le français se parle toujours surtout dans l'Hexagone), mais peut s'étendre à toute la planète pour ceux qui se déplacent ou les sites éloignés d'une même organisation.
Indépendance par rapport aux individus
Le logiciel s'affanchit aussi des caractéristiques spécifiques de chaque être humain qui l’utilise. Une couche particulière de logiciel, l'interface homme-machine, se charge de présenter à chacun la machine et les programmes de la manière la mieux adaptée. Cela lui donne un sentiment de transparence. L'utilisateur ne voit plus la machine elle-même, mais ce qu'il fait avec celle. C'est le wysiwyg (what you see is what you get), spécialement développé dans le cas des applications bureautiques (traitement de texte, tableur) et des outils de pilotage industriel. Cela adapte la machine à l’homme en général. Ces interfaces permettent en outre une certaine personnalisation par chacun, souvent réduite à des éléments décoratifs comme les "économiseurs d'écran", mais d'autant plus profonde que l'utilisateur est autonome et construit réellement son propre "système d'information personnel".
Cela ne supprime tout de même pas la nécessité pour les utilisateurs d'étudier les fonctions du logiciel pour apprendre à s'en servir. Mais cet apprentissage porte de plus en plus sur l'activité en jeu et de moins en moins sur les aspects particuliers plus ou moins arbitraires de la réalisation pratique du logiciel. Une fois assimilé le fonc-tionnement de base du clavier et de la souris (ce qui se fait vers 4 ou 5 ans pour les jeunes de 1999 qui vivent dans un milieu suffisamment équipé en informatique), l'apprentissage d'une application portera sur la comptabilité, la typographie ou les principes de la recherche documentaire et non plus sur les bizarreries de tel "raccourci clavier". A la limite, pour des professionnels formés, par exemple des guichetiers de banque, les nouveaux logiciels doivent pouvoir être employés par eux pratiquement immédiatement. C'est le "zéro-formation".
Indépendance par rapport à l'argent
Le logiciel s'affranchit même de l'argent. Scandale pour la pensée unique qui voudrait tout ramener à la finance, le logiciel tend à la gratuité. Et c'est en fait dans sa nature profonde. Car il appartient de naissance au monde des idées et des algorithmes, dont on sait qu'ils ne peuvent même pas se breveter, qu'on ne peut en protéger que les présentations particulières. C'est aussi dans sa nature puisque sa transmission se fait à coût nul (attention tout de même aux notes de téléphone), de même que sa reproduction (un CD-ROM vierge, acheté au détail, vaut actuellement à peine plus qu'un euro). Quant à sa conception, coûteuse certes, elle s'amortit sur des millions d'exemplaires. Pendant longtemps, les grands éditeurs de logiciels ont fait des fortunes en profitant de ce fort écart entre les coûts de production et le prix qu'ils parvenaient à faire payer au marché. A la fin du XXeme siècle, le logiciel devient "libre", c'est-à-dire pratiquement gratuit
L'autonomie fondamentale du digital
Réciproquement, ce gain général d'autonomie des systèmes peut se considérer comme une expression toujours élargie du digital, comme sa libération généralisée, le dégageant des contraintes du carbone et du silicium tout en les "informant" (au sens d’imposer une forme) et en les "formalisant" toujours plus profondément. Donnons quelques exemples.
La science progresse en libérant son expression la plus pure, les mathématiques et la logique, d'une certaine forme de vérité expérimentale. Les axiomes se choisissent arbitrairement ; ce qui compte c'est de pouvoir en déduire une théorie intéressante. Disons, plus précisément, que les axiomes ne dépendent plus d'une vérification expérimentale ni d'une évidence intérieure, mais de leur capacité à générer des théories qui explicitent les grandes intuitions importantes pour nous. Ils deviennent comme les fondations d'un monument que personne ne voit, mais qui assurent la solidité et l'avenir des structures plus fines dont nous jouissons en les regardant ou en les visitant.
Une autonomie perturbante : les virus
Enfin, la fin des années 80 a vu apparaître une réalité, connue depuis assez longtemps mais jusque-là plutôt théorique, les virus. Ces petits programmes sont tellement autonomes qu'ils se reproduisent sans demander la permission, et qu'il faut munir tout ordinateur sérieux de moyens prophylactiques et antiseptiques pour s'en débarrasser. Comme les virus grippaux et autres, d'ailleurs, ils ne font que se diversifier et se perfectionner, conduisant des four-nisseurs spécialisés à proposer des produits constamment remis à jour pour conserver les systèmes en bonne santé.
Il semblerait naturel, et même utile, de mettre cette vitalité à profit en fabriquant des bactéries utiles, comme dans le domaine biologique. Cette piste n'a pas été explorée ou n'a pas donné jusqu'à présent de résultats significatifs. Tout au plus certains systèmes fonctionnent-ils à base d' "agents" dotés d'une certaine autonomie, ou réseaux neuronaux (au départ réalisés sous forme directement électronique, mais depuis longtemps convertis en une forme particulière de programmation). Quelques chercheurs persévérants font tourner des expériences de "vie artificielle" qui restent, pour l'instant, des curiosités de laboratoire.
L'intelligence artificielle
Depuis toujours (Homère déjà), et en tout cas explicitement depuis la fin de la Deuxième Guerre mondiale, le problème s’est surtout posé sous la forme de l’intelligence artificielle et du réductionnisme. L’ordinateur parviendrait-il à atteindre le niveau humain de l’intelligence ? Ce qui revient à dire, symétriquement, que l’intelligence humaine, l’esprit, pourrait se réduire à une machine, et à une machine finie.
A la fin du XXème siècle, la question n’a pas trouvé de réponse définitive. L’ordinateur a certes atteint plusieurs des seuils que beaucoup ont longtemps estimés comme hors de sa portée: corriger les fautes d’orthographe (syntaxe comprise), lire un texte, imprimé et même manuscrit, avec un taux d’erreurs suffisamment faible, battre les grands maîtres aux échecs.
Pour autant, l’intelligence artificielle reste un peu décevante car ses succès sont le plus souvent obtenus par la force brute, en matière d’échecs par exemple, grâce surtout à une énorme mémoire de parties jouées. Sur un certain nombre de points, les progrès sont encore lents. La traduction automatique est encore bien imparfaite. Les robots (androïdes ou véhicules automatisés) restent gauches, limités dans leur possibilités de déplacement sur un terrain naturel.
Les militaires, américains notamment, n’ont pourtant pas ménagé les crédits. La seule forme vraiment achevée, et impressionnante, de véhicule largement autonome et autoguidé, c’est le drone et surtout le missile de croisière.
Enfin, l'ordinateur n’a jamais réussi à suivre l'humain dans une de ses aptitudes fondamentales: la création de nouveaux concepts, le développement de nouvelles théories.
Mais l'homme seul a ses limites, même assisté, même couplé sur son ordinateur, son réseau. Il ne se trouve qu'avec les autres. On pourrait dire ici un mot des "services" qui relaient les "produits". Allons droit aux groupements fondamentalement humains, ceux de la cité, de la politique.