Intervention du professeur Claude Pair
au « 40 ans du Loria »
3 juin 2016
1957-1976 : 20 ans d’informatique universitaire à Nancy
60ème anniversaire ?
J’ai vu dans le programme que je suis le « père fondateur de l’informatique en Lorraine » : c’est trop flatteur. Lorsque je me suis intéressé à ce sujet, il existait déjà dans des entreprises lorraines des services de calcul. Pour l’informatique universitaire, plusieurs articles traitent des origines : les dates ne varient guère, entre 1956 et 1958, et le fondateur est clairement désigné, Jean Legras, titulaire de la chaire de mécanique rationnelle ; il obtient alors d’IBM le prêt d’un calculateur 604, auquel le programme est communiqué sous forme d’un tableau de connexions construit à la main : ce n’est donc pas un ordinateur, mot tout juste forgé pour désigner les machines de Von Neumann, à programme enregistré dans la même mémoire que les données. Mais Jean Legras est tenace : il trouve en 1959 les moyens de louer un ordinateur, IBM 650. En même temps, il ouvre une option du 3e cycle de mathématiques : « analyse et calcul numériques », son thème de recherche, avec 4 étudiants la première année. Pour lui, la machine est un outil offert à ses collègues et aux entreprises, grâce à la participation des étudiants, dans le cadre d’un « Centre de Calcul automatique » : deux pièces 15 place Carnot et le 650 au 13. Cet esprit de service, bien différent du mandarinat des mathématiciens bourbakistes de Nancy, est tout à son honneur ; mais on ne peut parler de recherche en informatique.
D’ailleurs, l’outil est rudimentaire : 2 registres en mémoire centrale et un tambour magnétique de 8192 mots ; on programme dans un langage machine décimal entré sur cartes perforées, ou en passant par un assembleur qui en outre optimise l’implantation des instructions pour tenir compte de la rotation du tambour, mais qui, au lieu de mettre le programme objet en mémoire, perfore des cartes, à charger ensuite manuellement. On trouve pourtant en 1961 la première manifestation à Nancy d’une recherche en informatique : Marion Créhange soutient une thèse de 3e cycle « structure du code de programmation » qui définit et implémente sur 650 un macro-assembleur permettant, par exemple, de faire une addition en une seule instruction au lieu de trois ! Pourtant IBM a déjà défini Fortran, indépendant de la machine ; il existe sur 650, sans être utilisé à Nancy : on dit que le paquet de cartes qui en est le support est arrivé dans le désordre !
Personnellement, j’ai connu une expérience analogue en 1958-59 au CEA pendant mon service militaire : nous programmons en langage machine le concurrent de l’IBM 650, Bull Gamma « à extension tambour » ; un jour, on annonce une conférence sur la programmation automatique, ce qui nous fait rêver, mais il ne s’agit que d’un assembleur. Aussi, l’année suivante, le CEA achète un IBM 704 dont la mémoire est en tores de ferrites, et avec Fortran. Trop tard pour moi : mon service terminé, je suis devenu professeur de taupe au lycée Poincaré, et quelque peu nostalgique de l’informatique. Un collègue me parle du Centre de calcul et, au printemps 1962, je demande à rencontrer Legras. Il me reçoit chez lui et me propose de faire de l’analyse numérique et pour cela de venir dès la rentrée au cours de programmation qu’il a confié à Marion et à Jacqueline Giannesini : si je suis facilement, c’est que je prends conscience que, derrière les différences entre machines, il y a une réalité commune. En revanche, les livres que m’a prêtés Jean Legras ne m’attirent pas vers l’analyse numérique : il ne m’en voudra pas, nous allons le voir.
L’accès au Centre de Calcul me permet de trouver dans une armoire la collection des Communications de l’ACM ; et j’apprends à demander d’autres articles au centre de documentation du CNRS. En 1963 paraît la définition « révisée » d’Algol – algorithmic language – créé par un groupe international indépendant de tout constructeur. C’est une révolution qui sera fondamentale dans la constitution d’une science informatique : un programme n’est plus une suite d’instructions, toutes au même niveau, mais structuré comme un texte en langue naturelle ; la récursivité apparaît à deux niveaux : pour accroître la capacité d’expression des programmes et pour décrire la syntaxe dans une métalangue due à John Backus et proche des grammaires du linguiste Chomsky.
Cependant, on n’est pas très sûr de pouvoir un jour compiler ce langage : sur ce thème se constitue à l’intérieur du Centre de Calcul une équipe de recherche, avec l’appui constant de Jean Legras : d’abord, il obtient pour moi un poste d’attaché de recherche au CNRS, que je n’occuperai qu’un an tant sont grands les besoins d’enseignement ; puis il incite des étudiants à entrer dans l’équipe. Je me souviens de la réunion inaugurale à la rentrée 1963, où je trace les perspectives et organise l’équipe pour construire un compilateur Algol sur IBM 1620. Mon idée est de faire de l’informatique une science : comprendre, formaliser, généraliser, grâce à notre origine mathématique, mais sans faire des maths pour les maths. La difficulté est que l’ordinateur, mis à notre disposition par IBM, n’est accessible que certaines nuits et à Metz. Puis, comme ce n’est pas 1620 qui est choisi pour remplacer 650, tout s’arrête en 1966, sans que le compilateur soit réellement utilisable. Mais l’expérience n’est pas perdue.
Certes, nous avons moins de chance que Grenoble qui construit un compilateur Algol pour son IBM 704 : en 1964, Jean Claude Boussard soutient sa thèse d’état sur ce sujet, la première en informatique, mais il a fallu inventer pour elle une nouvelle spécialité, « sciences appliquées ». La seconde est la mienne « Etude de la notion de pile, application à l’analyse syntaxique », fin 1965, d’un style plus formel, et dans la spécialité « mathématiques », ce qui provoquera quelque incompréhension de mathématiciens. Elle met en évidence trois familles d’algorithmes de construction d’arbres syntaxiques, une ascendante et deux descendantes, « en profondeur d’abord » et « en largeur d’abord », dira-t-on plus tard.
Algorithmes, types – comme arbre et pile –, langages, ce sont les trois mamelles de l’informatique. Les années suivantes seront occupées par ces thèmes : exploration des graphes par des piles ; langages d’arbres, généralisant les langages linéaires ; analyse syntaxique de figures à deux dimensions ; définition et représentation des types nommés plus tard abstraits (nous disions structures de données) ; sémantique des langages de programmation ; systèmes d’écriture de compilateurs. A partir de 1970, le langage Algol 68 est l’occasion de réinvestir beaucoup de ces réflexions. Comme Algol 60, il fera avancer la science informatique. J’ai eu trente ans après la surprise de voir reconnue, grâce à Michel Sintzoff et Pierre Lescanne, mon antériorité sur la décidabilité de deux types récursifs, établie par un article publié en 1970 sur Algol 68.
Moins encore qu’Algol 60, ce langage sera utilisé pour programmer, ignoré par IBM alors tout-puissant, mais surtout victime de sa propre enflure. On avait moins besoin d’un langage algorithmique universel que d’un outil léger – ce sera Pascal – et d’une réflexion sur la programmation. C’était le temps de la programmation « structurée », terme qui date de 1972. Nous nous étions lancés dans la même voie à partir du début des années 70, notamment parce que les chercheurs étaient presque tous des enseignants et qu’un de nos choix était de lier étroitement recherche et enseignement. Cela débouchera sur une méthode de programmation, dite déductive, et un logiciel associé, Médée, permettant de faire ce qu’on nommera plus tard de la programmation fonctionnelle. En même temps est développé le projet Shiva, se référant à 5 bras d’un seul dieu, pour les 5 moments de la vie d’un programme.
J’aurais pourtant aimé évoquer les difficultés : l’insuffisance du matériel et le manque de personnel technique pendant toute la période dont j’ai parlé ; l’absence de locaux qui ne se résoudra qu’en 1982. Mais aussi les évolutions positives :
- la création de nombreuses formations à l’informatique : en particulier en 1971 nous sommes choisis parmi les quatre centres de formation de professeurs de lycée ; cela suscitera une nouvelle orientation de recherche qui se poursuit aujourd’hui ;
- les relations interdisciplinaires locales, dans l’esprit de service développé dès le départ par Jean Legras ;
- la volonté de rester groupés dans un laboratoire unique lorsqu’après 1968 ont été créées trois universités ;
- une reconnaissance nationale croissante par nos collègues, l’IRIA, le CNRS lorsqu’il s’est enfin intéressé à l’informatique ;
- les relations internationales, plus lentes à se développer par manque de temps et de moyens, mais existant depuis 1966 dans le cadre de colloques et groupes de travail de l’IFIP, notamment le WG 2.2 Formalization of programming concepts, puis à travers l’école d’été francophone que nous avons initiée en 1971 ; je suis aussi très fier qu’en 1968 Alain Quéré et moi ayons reçu une lettre de Rosza Peter, grande logicienne hongroise, et publié avec elle.
En 1973, le CRIN est reconnu par le CNRS comme équipe de recherche associée et en 1976 l’association est confirmée comme laboratoire associé : nous en fêtons l’anniversaire. Mais 1976 marque aussi une transformation. Parmi les membres du labo, deux thèses d’état ont été soutenues et d’autres s’annoncent. Après avoir longtemps pratiqué un recrutement local - exportation modérée mais pas d’importation – le CRIN a commencé à s’ouvrir : en particulier, Jean-Paul Haton est venu du laboratoire d’automatique pour créer un pôle d’intelligence artificielle avec de jeunes chercheurs déjà présents. En outre, début 1976 je suis élu président de l’Institut polytechnique et peu de temps après de la nouvelle section informatique-automatique du CNRS : je suis donc moins disponible. Il est temps de revoir l’organisation en identifiant quatre équipes, présentées dans notre demande de laboratoire associé.
C’est aussi cela que nous fêtons : le quarantième anniversaire d’un passage de l’adolescence à l’âge adulte.