L'informatique de Claude Pair (2021) Créhange : Différence entre versions
(→Compilateur Algol 60 (1963-1965) et thèses à Nancy) |
(→Compilateur Algol 60 (1963-1965) et thèses à Nancy) |
||
Ligne 99 : | Ligne 99 : | ||
[[File:IBM 1620 Model 1.jpg|center|thumb|Figure 2. IBM 1620|300px]] | [[File:IBM 1620 Model 1.jpg|center|thumb|Figure 2. IBM 1620|300px]] | ||
− | Avant d’envisager la programmation du compilateur, Michel Cusey | + | Avant d’envisager la programmation du compilateur, Michel Cusey travaille sur son ossature générale : l’analyse syntaxique, les déclarations de variables, la gestion des piles et de l’ensemble de la mémoire, la construction du |
− | |||
− | |||
programme objet. Il le fait en respectant scrupuleusement les idées de Claude | programme objet. Il le fait en respectant scrupuleusement les idées de Claude | ||
qui souhaitait vérifier sur un cas concret la pertinence de son approche mathé- | qui souhaitait vérifier sur un cas concret la pertinence de son approche mathé- |
Version du 23 mars 2022 à 17:06
L'informatique de Claude Pair
L'apport de Claude Pair à la création de la science informatique (années 1963 - 1981)
|
Sommaire
Avant-propos
Cet article a été mis en ligne dans le cadre des travaux menés au sein d'un groupe de travail mémoire de l'association des émérites de Lorraine.
L'article
Introduction
Sur une suggestion amicale de Claude Pair, nous avons accepté, 50 ans après, de présenter son activité scientifique en tant que l’un des fondateurs de l’informatique universitaire en France. Cet article couvre la période 1963–1981 : en effet après avoir été professeur en classe préparatoire, Claude rejoint l’enseignement supérieur en 1963. Dix-huit ans plus tard, en 1981, il s’oriente vers la haute administration en devenant directeur des lycées au ministère de l’Éducation nationale.
Avant d’aborder la rédaction, nous avons proposé à Claude l’organisation d’un colloque. Cette formule a permis de multiplier les témoignages et de mieux faire collectivement le bilan de ses recherches. Ce colloque a eu lieu au LORIA, à Nancy, le 14 juin 2019 [2]. Il a réuni 150 participants avec 17 intervenants dont Antoine Petit, PDG du CNRS. Près de deux ans plus tard, nous avons assemblé nos notes, puisé dans les documents à notre disposition et activé notre mémoire.
Précisons d’entrée que le lecteur ne trouvera pas ici des démonstrations rigoureuses ni des formalisations complètes. Il lui faudra pour cela consulter les nombreuses publications de Claude ou les 48 thèses qu’il a dirigées [3]. Nous avons choisi d’ajouter à des propos scientifiques des parties plus anecdotiques signalées en italique. Nous espérons ainsi aérer la lecture et évoquer l’ambiance du travail d’équipe que Claude a instauré, équipe qui au départ se comptait sur les doigts d’une main. Équipe interuniversitaire qui, en grandissant, sera associée au CNRS en 1973 grâce à Claude, puis constituera le Centre de recherche en informatique de Nancy (CRIN) en 1975. La croissance s’est poursuivie : 70 personnes en 1977, une centaine en 1984 avec la venue de l’INRIA [4].
Il faut se souvenir qu’au début des années 60, la science informatique est dans la petite enfance. La plupart des domaines que nous connaissons aujourd’hui sont alors à créer, le plus souvent dans l’indifférence — ou même contre l’avis — des mathématiciens qui ne voient alors aucune raison de s’intéresser aux ordinateurs. Il faut aussi rappeler que les moyens de communication actuels n’existent pas. Il n’y a pas encore de terminologie propre à la recherche informatique [5] et beaucoup de chercheurs français publient dans leur langue maternelle, ce qui contribue à les isoler dans le monde. C’est dans ce cadre que Claude Pair imagine des concepts qui ont été redécouverts par la suite. Comme nous le montrerons, Claude est un bel exemple d’application de la loi de Stigler[6] qui affirme qu’une découverte scientifique ne porte jamais le nom de son premier auteur. Nous souhaitons donc que le lecteur retienne de ce texte le caractère extrêmement novateur de ses recherches. Le recul du temps permet en effet d’affirmer qu’il a été un authentique visionnaire.
Les débuts : la compilation
Comme sa formation initiale l’y conduit[7], Claude devient professeur de « taupe » à Metz avant son service militaire qui lui offre l’opportunité de faire ses premiers pas en « calcul automatique » au CEA en 1958-59. Il y programme en langage machine sur Bull Gamma « à extension tambour », concurrent de l’IBM 650. Il est ensuite nommé à Nancy, au lycée Henri Poincaré.
- À Nancy, l’informatique universitaire a été introduite par Jean Legras [8] dès 1957 avec une machine à programme câblé, l’IBM 604, puis un ordinateur 9 IBM 650 dès 1958 10. En 1962, Claude prend contact avec Jean Legras qui lui donne accès au « Centre de calcul » qu’il a créé, et l’invite à suivre à la rentrée le cours de programmation sur 650 destiné à des adultes (cf. figure 1). Marion Créhange, chargée de la seconde partie, ne se doutait pas que cet élève, qui lui paraissait doué, allait devenir le père de la recherche en informatique à Nancy et serait son patron de thèse d’état !
Claude prend vite conscience que, derrière des machines différentes, se cache une réalité commune qu’il préfère explorer, plutôt que de s’orienter vers l’analyse numérique, spécialité de Jean Legras. Au Centre de calcul, il consulte la collection des Communications de l’ACM et d’autres revues. C’est ainsi qu’il découvre un nouveau langage de programmation, Algol [3], défini par un groupe international indépendant de tout constructeur, donc attirant pour des universitaires, et beaucoup plus novateur que le Fortran d’IBM : la récursivité de la définition des programmes et des fonctions fait rêver. Un programme n’est plus une suite d’instructions apparaissant au même niveau, mais commence à ressembler à un texte en langue naturelle ; sa syntaxe est d’ailleurs décrite par des règles proches des grammaires formelles dites context-free 11, introduites quelques années plus tôt par le linguiste Noam Chomsky. Compiler ce langage demeure un problème sérieux. Claude, devenu pour un an attaché de recherche au CNRS, constitue une équipe dans ce but et, dès 1963, il signe une première publication aux Comptes-rendus de l’Académie des sciences [P1], puis, en 1964, il publie l’article intitulé « Arbres, piles et compilation » dans la revue française de traitement de l’information [P2].
Cours de DEA, création de l’équipe
- En 1963, Jean Legras assiste, à Grenoble, à un séminaire dont l’objet est la présentation de la version française de la définition d’Algol 60. Claude se souvient de son retour enthousiaste : « un langage avec des SI et des DO ! ». Jacques André 12[T3] raconte : « toute affaire cessante, ils ont organisé dans le cadre du DEA un cours sur Algol 60 : ça a été pour moi une révélation car c’était quand même plus passionnant que le PASO de la 650 ! Quand Claude a parlé au début de l’année scolaire suivante de prendre des étudiants en 3e cycle pour faire un compilo d’Algol 60, j’ai sauté sur l’occasion ».
À cette époque, Claude met en place des réunions régulières, premier « séminaire informatique nancéien », associant théorie et applications. Il signe plusieurs publications internes au Centre de calcul.
- Jacques André raconte : « Claude Pair nous donnait des conférences sur les langages et nous devions chacun rédiger un chapitre. Je me souviens qu’il m’avait rendu ma prose couverte de rouge. Voyant cela, je m’étais dit que ce n’était pas la peine que je continue... Mais en réalité il était content de ma rédaction et visait seulement à en améliorer le fond ».
Compilateur Algol 60 (1963-1965) et thèses à Nancy
Puisqu’il n’existe pas encore de cursus informatique, la plupart des étudiants qui rejoignent cette équipe jusqu’en 1968 viennent des « mathématiques pures ». C’est le cas de Michel Cusey [T1], premier thésard de Claude et pilote de la petite équipe.
Jacques André se souvient : « On a commencé le compilo sur IBM 650, j’y ai travaillé la lecture des nombres, et assez vite, bonne nouvelle, on allait avoir accès à un 1620 chez IBM (cf. figure 2). Mais cette machine était à Metz et n’était disponible qu’après la fermeture des bureaux. Tous les quatre 13, on y allait avec la voiture de Michel, départ vers 17 heures et retour... quand nos essais étaient finis, le plus souvent à deux heures du matin. La bécane était en vitrine et on avait l’impression d’être des ours en cage quand les passants nous regardaient avec curiosité. On « sandwichait » autour de la machine jusqu’au jour où le directeur du centre IBM nous a convoqués pour nous signifier assez rudement que les bières sur le pupitre, ce n’était pas vraiment dans l’esprit de l’entreprise. Du coup, on est allé souvent prendre une choucroute à la fin du travail à la brasserie de la gare de Metz, et je n’en ai jamais mangé d’aussi bonnes depuis... ».
Avant d’envisager la programmation du compilateur, Michel Cusey travaille sur son ossature générale : l’analyse syntaxique, les déclarations de variables, la gestion des piles et de l’ensemble de la mémoire, la construction du programme objet. Il le fait en respectant scrupuleusement les idées de Claude qui souhaitait vérifier sur un cas concret la pertinence de son approche mathé- matique. Claude est ravi que sa théorie « marche » et il lui en est reconnaissant. Jacques André est en charge des entrées-sorties et des procédures de service. La définition du langage Algol 60 ne définissant rien sur les entrées-sorties, il adopte les propositions de Donald Knuth [21]. Jean-Marie Laporte s’occupe des tableaux. Plus tard, Marion Créhange traite des procédures, en particulier de la récursivité, avec la collaboration d’Alain Floc’h qui sera ensuite chargé de la mise au point finale du compilateur.
Citons Claude 14 : « En 1965, le compilateur est presque achevé. Le groupe européen des utilisateurs de 1620 me propose de le présenter à sa réunion de Mannheim [P5]. À partir de là, l’université de Saint-Andrews (Écosse) me demande de le lui envoyer sur cartes perforées, l’outil de l’époque pour entrer des informations dans un ordinateur. Mais, patatras, pour remplacer le 650 vieillissant, Legras choisit, dans le cadre du Plan calcul naissant, plutôt que le 1620, une machine française CAE 510 qui possède déjà un compilateur Algol.
Notre motivation disparaît et IBM arrête son prêt, avant que le compilateur soit réellement utilisable par d’autres que nous ».
Dans les mois qui suivent, l’équipe commence à se disperser. Mais l’expérience ne sera pas perdue. Des notions ont été dégagées, comme celles d’analyse syntaxique et de pile, des étudiants ont été formés, en particulier à la théorie des langages, et cinq thèses de troisième cycle ont été soutenues, dont trois à propos du compilateur [T1, T2, T3, T4, T5].
Fin 1965, Claude soutient sa thèse d’État, « Étude de la notion de pile, application à l’analyse syntaxique ». Elle récapitule les méthodes d’analyse syntaxique des lan- gages de Chomsky, mettant 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. D’un style formel, rangée dans la spécia- lité « mathématiques », elle suscitera quelque incompréhension des mathématiciens « purs ». Par la suite, Claude pensera d’ailleurs que sa présentation était trop mathé- matique : « Il faudra un peu de temps pour inventer un style d’écriture rigoureux mais moins uniquement mathématique, adapté à cette nouvelle science et tenant compte de ses composantes fondamentales : algorithmes [P66], types de données [P24] (comme les piles ou les arbres syntaxiques d’une grammaire de Chomsky), langages de pro- grammation ». Quoi qu’il en soit, il s’agit de la seconde thèse d’État en informatique, après celle que Jean-Claude Boussard avait soutenue l’année précédente à Grenoble, décrivant un compilateur Algol qu’il avait écrit pour un IBM 704 que son université avait la chance de posséder. Cette thèse, elle, était qualifiée « de science appliquée » car l’informatique n’était pas encore reconnue comme une discipline à part entière à l’époque dans les universités françaises.
Le chercheur et sa prescience
L’analyse syntaxique de précédence
L’analyse syntaxique est la première étape de la compilation : elle consiste à cal- culer, d’après la chaîne de caractères du programme à traduire, sa structure gramma- ticale sous la forme d’un arbre. Cette opération doit être faite de façon déterministe si on veut éviter tout retour en arrière. Claude montre que c’est possible pour le lan- gage Algol, en mettant au point un algorithme (cf. figure 3) qui le permet, fondé sur une analyse ascendante, qui sera celui du compilateur nancéien et qu’il décrit dans un article publié en 1964.
Publications de Claude Pair
[P1] ↑ Justification théorique de l’utilisation des piles en compilation, CR AS 257, 3278- 3281, 1963.
[P2] ↑ Arbres, piles et compilation, Revue française de traitement de l’information - Chiffres 7, n°3, 199- 216, 1964.
[P3] ↑ Sur la détermination de la correspondance paramètre formel - paramètre effectif des procédures Algol, congrès AFIRO, 157-162, 1964.
[P4] Essai de description de la sémantique des langages de programmation, séminaire AFIRO et rapport interne, 1964. [P5] Description d’un compilateur Algol, European Région 1620 Users Group, Mannheim, 1965. [P6] Étude d’un algorithme d’analyse syntaxique, manuscrit consultable aux Archives Henri-Poincaré, https://poincare.univ-lorraine.fr/, Nancy, 1965. [P7] Étude de la notion de pile, application à l’analyse syntaxique, thèse d’État, Nancy, 1965. [P8] Analyse syntaxique des langages de Chomsky, exposé à un séminaire à Grenoble, 1966. [P9] Sur des algorithmes pour les problèmes de cheminement dans les graphes, Théorie des graphes, Journées internationales d’étude, Rome, Dunod - Gordon and Breach, 271-300, 1966. [P10] La formalisation des grammaires, Centre de Recherches et d’Applications Linguistiques, Faculté des lettres et sciences humaines, Nancy, 1967. [P11] Définition et étude des bilangages réguliers, avec A. Quéré, Inf. and Control 13, 565-593, mai 1968. [P12] Introduction à Algol 68, RIRO Informatique 3, n°3, 17-52, 1969. [P13] Algol 60, Techniques de l’Ingénieur H 2160, 1970. [P14] Sur des notions algébriques liées à l’analyse syntaxique, RIRO Math.4 n° 3, 3-29, 1970. [P15] Sur les fonctions primitives récursives de ramifications, avec A. Quéré, Acta Math. Acad. Sc. Hung. 21, 437- 444, 1970. [P16] Mille et un algorithmes pour les problèmes de cheminement dans les graphes, RIRO Informatique 4 n° 3, 125-143, 1970. [P17] Survol de la théorie des langages, journées AFCET, Grenoble, 1970. [P18] FACE, langage pour l’écriture des compilateurs, avec F. Bellegarde et J. Maroldt, congrès AFCET, broch. 2, 5-21, 1970. 29. Par exemple, selon G
Références
...
[8| M. Créhange, Structure du code de programmation, Thèse 3e cycle, Nancy, 1961 32. Et Code de programmation, Cahier n° 1 du groupement des utilisateurs scientifiques des ordinateurs IBM 650, octobre 1960.
[9] ↑ M. Créhange et M.-C. Haton,, L’informatique universitaire à Nancy : un demi-siècle de développement, revue de la SIF 1024 no 3, pp. 59-74. 2014.
[10] O. J. Dahl, E.W. Dijkstra, C. A. H. Hoare, Structured Programming, Acad. Press, 1972
...
Notes de l'article
- ↑ marion.crehange@sfr.fr, pierre.lescanne@ens-lyon.fr, apmf.quere@laposte.net. Ar- ticle également disponible sur HAL, https://hal.archives-ouvertes.fr/hal-03193950v2.
- ↑ http://claudepair.fr/
- ↑ Pour être précis, 47 thèses sur la période considérée ici puis, quelques années plus tard, celle de Radhia COUSOT (1985).
- ↑ En 1997, l’ensemble est devenu le LORIA, unité mixte associant CNRS, INRIA et les universités. En 2017, il comptait 300 permanents de 48 nationalités (rapport HCERES). Sur l’histoire de l’informatique à Nancy, voir aussi [9] [9, 25].
- ↑ Un seul exemple : pour traduire l’inélégant garbage collector, Claude a introduit le terme « ramasse miettes », voir Wikipedia.
- ↑ Il se dit que cette loi s’applique aussi à son auteur, voir « loi de Stigler » sur Wikipédia
- ↑ Né à Blâmont (Meurthe-et-Moselle) en 1934, Claude devient un élève brillant au collège à Lunéville. Il est admis en 1951 au lycée Louis le Grand à Paris, puis en 1953 à l’École normale supérieure. Il est agrégé en 1956, et nommé professeur de mathématiques spéciales à Metz (1956-1957).
- ↑ http://www.professeurs-medecine-nancy.fr/livre_jean_legras.htm.