L’informatique m’a séduit brutalement, par un coup de foudre, en octobre 1968. Mais ce n’est qu’en mai 1986 que j’ai eu la révélation, tout aussi brutale, qu’elle était aussi une vraie science, en sus de la technique d’un certain nombre d’artefacts matériels et logiciels qui en font une technologie, puisqu’ils ont du langage en eux, comme nous l’enseigne Clarisse Herrenschmidt. Si je me propose de relater ces deux processus, ce n’est pas pour le seul plaisir de raconter ma vie, mais parce qu’il me semble qu’il y a quelques enseignements généraux à en tirer et éventuellement à soumettre à votre discussion sagace.
L’informatique n’est pas une branche des mathématiques
En novembre 1967 je suis entré dans une école qui était alors une division de l’ENSAE et qui est devenue depuis l’ENSAI. On y enseignait les statistiques et l’économie. La classe préparatoire m’avait dégoûté durablement des mathématiques. En première année nous eûmes un cours de programmation en Fortran, qui me confirma dans mes préjugés : l’informatique était un peu comme les mathématiques, en pire. Le cours était dispensé de façon à confirmer le postulat de conception du langage Fortran : rédiger un programme était une activité très semblable à l’écriture d’une suite de formules mathématiques (Fortran est un acronyme pour Formula Translation). C’était d’autant plus fastidieux qu’il n’y avait pas de travaux pratiques. Et de toutes les façons dans la rue c’était Mai 68, beaucoup plus intéressant, je ne mettais guère les pieds à l’école et n’ai gardé aucun souvenir d’éventuels examens.
À la rentrée de septembre je pris sans enthousiasme le chemin d’un stage obligatoire de deux mois d’informatique à plein temps au centre de calcul de l’Insee, rue Boulitte dans le 14ème arrondissement. Il y avait des cours, des conférences, des travaux pratiques de programmation donnés par des ingénieurs de la SEMA et de la CERTI. Au début c’était du Fortran, toujours aussi ennuyeux, et des cours d’architecture matérielle, à peu près incompréhensibles pour qui n’avait jamais vraiment programmé.
Plus intéressant, des conférences sur ce que l’on n’appelait pas encore les Systèmes d’information : par exemple, les contraintes à satisfaire pour le système de réservation d’une compagnie aérienne montraient l’utilité de l’informatique en réseau et la nécessité de la programmer correctement. Je commençai à tendre l’oreille.
Il est à noter que ce stage était excellent, tellement bon qu’il a aussitôt été retiré du programme, nous ne fûmes que deux promotions à en profiter. La direction de l’Insee craignait que nous n’acquérions trop de compétences informatiques, ce qui nous aurait sans doute rendus encore plus bêtes, selon la vision toujours actuelle de l’élite intellectuelle française.
Le coup de foudre informatique de 1968
Puis vint un cours de PL/1 : ce langage, descendant d’Algol mâtiné de Fortran et de Cobol et au nombre des ancêtres de C, était affranchi de la versification rigide de Fortran (une instruction par ligne, en colonne 7) et de la misère de son vocabulaire au profit d’un texte en format libre, constitué de vraies phrases ponctuées de points-virgules (mais qui n’avait pas le chic de Pascal dont les programmes se terminent par un point). On avait là affaire à un vrai langage grâce auquel on pouvait écrire un texte qui décrirait ce que l’on voulait que l’ordinateur fît.
Fut-ce la morphologie du langage, ou le talent pédagogique des instructeurs, ou l’atmosphère magique du centre de calcul et de ses deux IBM 360/50 sous OS/MFT desservis par une armée d’opérateurs et de pupitreurs, ou le charme de ravissantes « perfo-vérifs » auquelles nous remettions nos feuilles de programmation pour qu’elles les transforment en cartes perforées ? En tout cas je passai en quelques jours de la détestation à l’amour fou : je savais que c’était cela que je voulais faire, toute ma vie. Et c’est ce que je fis : l’époque où les intellectuels comme Schützenberger commençaient à s’intéresser à l’informatique était révolue, celle où l’on avait compris que les salaires y étaient plus élevés qu’ailleurs n’était pas encore advenue, alors ma candidature à un poste d’analyste-programmeur au département informatique de l’Insee ne rencontra aucune concurrence.
Apprendre à programmer
Le moins que l’on puisse dire était que ma connaissance de l’informatique était courte. Je suivis quelques stages supplémentaires de PL/1 chez IBM, où le clergé nous inculquait en sus la religion d’IBM, et je peux dire que la catéchèse était très efficace : je m’y convertis, ce qui n’allait pas sans quelques conflits intérieurs avec le maoïsme que je pratiquais hors du bureau (j’ai depuis apostasié les deux). Entre les stages je partageais un bureau avec deux collègues plus expérimentés qui m’ont beaucoup appris : l’un d’eux avait écrit un programme de recherche dichotomique en assembleur, c’était une gloire locale !
Mon travail consistait à dépouiller les statistiques d’état-civil, en PL/1, sous l’égide de Mademoiselle Solange Hémery, de la division de démographie de l’Insee dirigée par Gérard Calot. C’était formateur : si je lançais le soir un programme d’édition de tableaux en me trompant dans le niveau de ventilation des données, en arrivant le lendemain matin j’étais attendu par un chariot chargé de trente kilos de papier (et par les réflexions ironiques des opérateurs).
Un an plus tard fut le temps du service militaire. À mon retour, fin 1971, la politique industrielle nationale avait atteint l’Insee, qui avait acheté un Iris 80 et réformé sa politique de développement logiciel pour s’y adapter, ce qui imposait de passer de PL/1 à Cobol : ce retour en arrière me sembla insupportable, je décidai de passer à l’assembleur, et pour ce faire de quitter la division des applications statistiques pour celle des systèmes d’exploitation. Par la même occasion j’étais passé du maoïsme au deleuzisme (les machines désirantes et le corps plein sans organes, vous vous souvenez de l’Anti-Œdipe ?).
Des statistiques au système d’exploitation, de PL/1 à l’assembleur
C’était passionnant : je retournai chez IBM suivre les cours système, nous faisions des générations de systèmes (aujourd’hui on dit compilation de noyaux, mais c’est exactement la même chose), nous écrivions des programmes canal (aujourd’hui pilotes de périphériques). Le langage des programmes canal pour les disques IBM ressemble énormément aux commandes SCSI d’aujourd’hui, je crois qu’il y a une filiation. Souvent nous faisions cela la nuit, parce qu’il fallait réserver l’ordinateur et que dans la journée nos camarades en avaient besoin (un unique ordinateur servait à 100 ou 200 programmeurs). Un souvenir pittoresque, avoir un jour compilé un noyau avec la sortie du code binaire sur perforateur de cartes, soit 3 ou 4 000 cartes, et avoir de ce fait dû booter la machine (en langage IBM, faire IPL, Initial Program Loading) sur le lecteur de cartes. Ensuite nous avons trouvé le moyen de diriger la sortie sur une bande magnétique (les disques étaient gros en volume, petits en capacité, chers, et donc peu disponibles). Le choix du périphérique de boot ne se faisait pas en configurant GRUB, mais en manipulant les clés du pupitre (un meuble de 2m de haut et de plusieurs centaines de kilos) pour entrer l’adresse binaire de l’appareil désiré.
En 1974 fut décidé de lancer une expérience de temps partagé, en langage IBM TSO (Time Sharing Option), et j’en fus chargé avec une collègue, elle plutôt pour la formation des utilisateurs et moi plutôt pour la technique. Il s’agissait d’avoir des machines à écrire connectées à l’ordinateur, on tapait une commande au clavier et le système répondait, nous trouvions cela merveilleux. Il y avait un éditeur de texte en comparaison duquel ed de Unix est un sommet de modernisme gadgetisé. Peu après nous eûmes même des écrans cathodiques 3270 avec 24 lignes de 80 caractères, et la possibilité de retour arrière pour effacer des caractères tapés par erreur. Un soir j’ai commencé à utiliser par ce procédé un débogueur symbolique pour corriger un de mes programmes en assembleur : c’était tellement fascinant que je fus rappelé à la réalité par l’irruption de la femme de ménage à 6h du matin.
Hélas la direction de l’Insee ne concevait pas très bien l’utilité de ce travail, les idées stupides de « recentrement sur le métier de base », d’« alignement des processus sur les métiers » et autres balivernes tournées vers la taylorisation du travail intellectuel commençaient à faire leur chemin, ce qui me conduisit à laisser l’Insee à sa médiocrité pour voguer vers d’autres cieux, mais ceci est une autre histoire.
En attendant, je n’avais toujours pas compris que l’informatique était une science.
Apostasie d’IBM
Après un passage par la Commission de développement de l’informatique du ministère de l’économie et des finances, qui m’avait laissé entrevoir de tels abîmes d’incompétence et de gabegie que j’en conçus plus d’indulgence pour l’Insee, j’étais devenu chef du service informatique de l’Ined (Institut national d’Études démographiques), et j’avais découvert avec stupéfaction que l’ordinateur DEC (Digital Equipment Corporation) de ce petit établissement de recherche, pourtant un modeste PDP 11/40 sous IAS avec 256 Ko de mémoire à tores de ferrite, avait une bonne décennie d’avance sur la lourdeur des systèmes IBM. Cette minuscule machine arrivait à délivrer des temps de réponses corrects à une dizaine d’utilisateurs interactifs simultanés, là où la technologie IBM aurait nécessité pour le même résultat une machine au moins dix fois plus grosse et plus chère. J’apostasiai donc (ce ne sera pas la dernière fois) et me convertis à DEC.
L’Ined m’avait recruté pour mon aptitude supposée à mener le renouvellement de son infrastructure informatique en contournant le plus habilement possible les directives de la politique industrielle nationale, qui nous aurait équipés d’un Mini 6 de CII-Honeywell-Bull, ordinateur dont nous n’aurions rien pu faire faute de logiciels convenables. Nous voulions un VAX de DEC, et nous l’avons eu, certes à l’aide du dossier que j’avais monté, mais aussi grâce à l’atténuation de la rigueur de la politique industrielle en ces années 1981-1982, surtout pour les établissements de recherche publics protégés par le ministre Chevènement.
Le PDP se programmait en Fortran, ce qui m’avait mené à revenir à ce langage. Il y avait aussi un compilateur Pascal, ce qui m’avait donné l’occasion d’apprendre ce langage et de l’utiliser pour quelques applications, mais il n’était pas très robuste. Le VAX avait un compilateur PL/1 Subset G, c’est-à-dire débarrassé de tous les gadgets inutiles ou nuisibles du PL/1 d’origine, en fait le meilleur PL/1 que j’aie rencontré (des cours de programmation donnés à l’Ensae sous système Multics m’avaient fourni l’occasion d’utiliser celui de ce système, ainsi que l’éditeur Emacs). J’avais aussi acheté le compilateur Ada, pour la modique somme de 500 000 Francs après la remise de 80% consentie aux établissements de recherche, et organisé des cours Ada à l’ENST toute proche, dispensés par Jean-Pierre Rosen et Philippe Kruchten.
Mais pour moi l’informatique n’était toujours qu’une technique.
Histoire et Épistémologie de l’Informatique
Comment me vint aux oreilles la nouvelle de l’organisation par le CREIS d’un colloque Histoire et Épistémologie de l’Informatique les 29 et 31 mai 1986 ? Cette manifestation fut malheureusement sabotée par une grève de la SNCF qui en tint éloignés les participants de province, comme Henri Habrias, ou étrangers, comme Mihály Csákó, mais il restait beaucoup de communications de grand intérêt, comme celle de Jacques Arsac, et j’y fus, à l’IUT de l’avenue de Versailles. J’en ai conservé précieusement les actes, et à relire le texte d’Arsac on mesure combien il avait déjà compris les implications intellectuelles et sociales de la révolution industrielle informatique (que j’appellerai révolution cyberindustrielle), qui n’était pourtant à l’époque déclenchée que depuis une dizaine d’années.
Les principaux animateurs du colloque étaient Pierre Lévy et Philippe Breton, qui à l’époque travaillaient beaucoup ensemble (ils ont depuis pris des voies différentes). L’intervention de Philippe Breton était organisée autour de quatre textes qualifiés de fondateurs de l’informatique, qui n’étaient à l’époque pas très accessibles (faute de Web !) et dont il inséra dans les actes des copies privées en marge des droits de leurs éditeurs éventuels :
– Behavior, Purpose and Teleology (Comportement, intention et téléologie), par Norbert Wiener, Arturo Rosenblueth et Julian Bigelow, en français dans Les Études philosophiques, 1961, n° 2.
– A logical calculus of the ideas immanent in nervous activity, par Warren S. McCulloch et Walter Pitts, The Bulletin of Mathematical Biophysics, 1943, Vol. 5, n° 4.
– Computing machinery and intelligence (Les ordinateurs et l’intelligence), par Alan Turing, en français dans Pensée et machine, Milieux, Champ Vallon, 1983.
– First Draft of a Report on the EDVAC, par John von Neumann, 1945.
Cette liste nous indique qu’en cette année 1986 sévissait l’épidémie décennale d’intelligence artificielle (IA) : tous les dix ans une nouvelle cohorte d’informaticiens arrive en oubliant les réfutations toujours valides des prétentions de l’IA (dont on trouvera les principaux éléments sous la plume de John von Neumann, The Computer and the Brain, traduit en français à La Découverte, et plus encore dans le livre de Hubert Dreyfus, What Computers Can’t Do : The Limits of Artificial Intelligence, traduit en français chez Flammarion sous le titre Intelligence artificielle : mythes et limites, avec une belle postface de Jacques Arsac). Cette nouvelle génération utilise à chaque fois le même argument : « oui mais maintenant avec les performances accrues des ordinateurs l’intelligence artificielle devient possible ». C’est toujours aussi faux, mais à chaque fois il faut réfuter, ce que faisait le colloque du CREIS, en montrant que si les prétentions de l’IA sont toujours hors d’atteinte, les financements qu’elle réussit à capter stimulent des recherches fructueuses dont l’informatique recueille les résultats.
De ces quatre textes, en fait seul celui de von Neumann est fondateur de l’informatique, en ce qu’il signe l’invention de l’ordinateur. Comme l’a fort bien dit Samuel Goyet, avant von Neumann, programmer un calculateur c’était tourner des boutons et brancher des fiches dans des tableaux de connexion, depuis von Neumann c’est écrire un texte ; cette révolution ouvrait la voie à la science informatique.
Même s’il n’a pas inventé l’ordinateur, Alan Turing est un fondateur de la science informatique, mais plus par la machine qui porte son nom (machine purement théorique, système formel [1] dépourvu de toute prétention à une réalisation mécanique, rappelons-le) que par cet essai philosophique sans grande postérité informatique. Signalons au passage aux spectateurs du film Imitation Game qu’il comporte au moins trois erreurs de fait majeures : la machine qu’ils voient fonctionner dans le film n’est pas la machine de Turing (et pour cause, elle n’a jamais existé que sur le papier) mais la Bombe, une machine effectivement conçue par Alan Turing pour casser le code des machines cryptographiques allemandes Enigma. Ni Colossus ni a fortiori la machine de Turing (non plus d’ailleurs que l’ENIAC d’Eckert et Mauchly, contrairement à une idée assez répandue), et encore moins la Bombe, ne sont des ordinateurs au sens actuel du terme, c’est-à-dire des calculateurs automatiques, programmables et universels. Enfin ce n’est pas de peur que son homosexualité soit révélée que Turing s’est suicidé. Mais à part cela le film donne une idée assez juste du genre de problème que les chercheurs de Blechtley Park voulaient résoudre et des moyens qu’ils employaient pour ce faire.
Le texte de McCulloch et Pitts est fondateur d’une autre discipline, au point de rencontre de la statistique, de la recherche opérationnelle et de l’informatique : les réseaux de neurones, qui n’ont finalement que peu à voir avec ceux de notre système nerveux, contrairement à ce que l’on pouvait croire dans les années 1940 ou 1950.
Quant au texte de Wiener, Rosenblueth et Bigelow il illustre la cybernétique, une discipline qui avait commencé à exister à cette époque, puis dont personne n’a plus entendu parler jusqu’à la date récente où tout est redevenu cyber, ce dont je me félicite parce que c’est un mot élégant et qui dit assez bien ce qu’il veut dire.
Révélation de 1986 : c’est une science !
En fait, plus que les textes proposés, c’est la teneur des exposés qui m’a convaincu brutalement de la nature scientifique de l’informatique. Je ne me rappelle plus si Jacques Arsac était venu en personne ou s’il avait seulement fait parvenir sa communication, mais en relisant celle-ci on retrouve les idées qu’il a maintes fois exprimées à ce propos : un enchaînement de circonstances l’a mené de l’astrophysique à l’informatique, mais jamais il n’a eu le sentiment de faire autre chose que de la science. Il retient l’idée que l’objet de la science informatique est la transformation de l’information, mais qu’il faut préciser, parce que le comptable, le journaliste voire l’historien peuvent partager cette définition. Il précise donc que l’informatique, de l’information, ne traite que la forme et pas le contenu, encore moins le sens dont il réserve l’usage à l’esprit humain, et il inscrit cette conception dans la filiation des nominalistes de la fin du Moyen-Âge et de Thomas Hobbes (je laisse aux philosophes le soin de juger la pertinence de ce rattachement).
Quels furent, lors de ce colloque, les facteurs qui ont déclenché cette révélation ? Entendre de vrais chercheurs parler avec respect de concepts que je ne considérais jusque là que comme des ustensiles : mémoire, adresse, instruction, sous-programme. Comprendre que cette élévation au rang de concept pouvait rehausser la position sociale et intellectuelle des informaticiens, qui ne seraient plus automatiquement en position d’infériorité par rapport aux « vrais scientifiques ». Imaginer les développements intellectuels rendus possibles par cette conceptualisation. Bref, ce colloque ouvrait des horizons vastes et nouveaux, et prouvait avec des arguments qu’ils n’étaient pas fallacieux.
Il me faudra attendre encore de nombreuses années pour voir émerger du groupe Itic de l’EPI (Enseignement public et informatique) l’énumération des quatre concepts qui forment le socle de la science informatique : information, programme, machine, langage (pour ce que je peux en savoir, la réunion de ces quatre concepts, à l’exclusion d’autres candidats, fut l’œuvre de Gilles Dowek, et les conclusions à en tirer peuvent être complétées par la lecture de l’article de Wikipédia sur l’épistémologie de l’informatique). Mais déjà en 1986 m’était apparu que l’informatique avait son corps de concepts et de méthodes, distincts de ceux des mathématiques ou de la linguistique, pour ne considérer que les disciplines les plus proches.