Patrimonialisation scientifique et technique : Histoire du premier compilateur ALGOL intégré au système d’exploitation d’une machine IBM (10/10 - année 2020)

Publié par ACONIT (Association pour un Conservatoire de l'Informatique et de la Télématique), le 7 décembre 2020   1.5k

par Xavier Hiron et Maurice Geynet (ACONIT)

- sur la base d'un texte de Jean-Claude Boussard daté de mai 2008 et inséré dans le Bulletin n° 25 de l'association ACONIT -


Un premier compilateur du langage informatique Algol (algorithmic language), langage créé à la fin des années 1950 sous l’impulsion de l’UNESCO, fut réalisé à Grenoble entre 1960 et 1964, afin d’obtenir un langage machine exécutable. Ce travail colossal fut entrepris sous la houlette efficace et bienveillante de quatre patrons de l’informatique grenobloise, à savoir Louis Bolliet, pour la partie relevant de l’ingénierie, Noël Gastinel et Bernard Vauquois, pour les parties plus théoriques, et enfin Jean Kuntzmann pour la supervision générale. À l’époque, cette étape cruciale, qui déboucha sur une thèse d’Etat soutenue par Jean-Claude Boussard, consacra pour un temps Grenoble comme capitale mondiale du logiciel, ce qui suscita, entre autre, la création au sein de notre agglomération alpine de laboratoires de recherche de firmes telles que IBM, Bull ou encore Hewlet-Packard.


Tableau des définitions pour l'écriture des nombres dans ALGOL, manuel pratique, Bolliet, Gastinel, Laurent (Paris, Hermann, 1964)


Le contexte : « On a fait ce qu’on a pu. »

Dès l’époque de son lancement, trois sortes de contraintes se sont révélées particulièrement difficiles à concilier avec l’ambition du projet. La première fut le peu de support théorique existant du point de vue algorithmique et structures de données. La théorie des « piles de mémoire » (structures Last in First Out) était encore balbutiante et ne donnera lieu à un doctorat de Claude Pair à l’Université de Nancy qu’en 1965 seulement. Les acteurs pouvaient s’appuyer sur une analyse d’expressions arithmétiques simples et bien parenthésées, par l’intermédiaire d’une notation fixée a posteriori par les opérateurs (appelée Polish notation), et sur la gestion améliorée des tables d’identificateurs par adressage dispersé (appelée Hashcoding). Tous les autres ingrédients, plus ou moins théoriques et indispensables à la bonne marche de l’ensemble, étaient à inventer, et surtout à piloter de manière cohérente. La thèse de Jean-Claude Boussard contient, entre autres, les organigrammes détaillés du système complet, tous rédigés à la main par Maurice Geynet et décrivant notamment les algorithmes d’analyse lexicale et syntaxique mis au point à cette occasion.

Enfin, le blocage administratif systématique vis-à-vis d’une discipline émergente et encore peu définie dans l’esprit du plus grand nombre (en 1964, le mot informatique est encore balbutiant) est réel. Au point de ne pas savoir comment libeller les travaux de doctorat : le mot Mathématiques ne devait pas y apparaître, ni celui d’ingénieur ! Il n’était pas question de confondre ces travaux de technique « vulgaire », souvent menés en partenariat avec l’industrie, avec les recherches nobles que produisait alors la Physique. On se replia donc sur la dénomination plus générique de Sciences appliquées, dénomination dont la plupart des informaticiens, 50 ans après, sont toujours fiers.


Compilation des expressions arithmétiques simples dans ALGOL, manuel pratique, Bolliet, Gastinel, Laurent (Paris, Hermann, 1964)


La réalisation : « On a fait de notre mieux. »

En dépit des difficultés et réticences qui viennent d’être rappelées, les équipes grenobloises, à l’instar des autres équipes de recherches européennes, ont fait de leur mieux pour parvenir à élaborer dans les meilleurs délais des produits fiables. L’enjeu était d’intégrer ces nouveaux langages au monde émergent des gros calculateurs et de leurs systèmes d’exploitation, sans créer de difficultés supplémentaires pour les techniciens compétents qui seraient amenés à les programmer. Les acquis principaux de ces travaux ont été les suivants :

- la complétion du langage compilé par le système de 1964 vis-à-vis des rapports successifs ayant conduit à la définition initiale du langage Algol. Cela a permis la prise en compte de toutes les possibilités ouvertes par la version Algol 60 (pour 1960), tant du point de vue algorithmique que des points de vue de structuration des données, de procédures récursives à profondeur quasi illimitée, du volume de la bibliothèque standard, de la précision et de l’exhaustivité des messages d’erreurs émis à la compilation et à l’exécution.

- l’intégration totale et transparente du système compilé à l’ensemble du système d’exploitation IBSYS/IBJOB permettant, et ce pour la première fois au monde, d’exécuter sur les machines IBM qui en étaient pourvues des trains successifs (Batch Processing) de travaux en Algol, intégrant sans restriction des travaux rédigés dans les autres langages déjà disponibles ou qui le seraient au fur et à mesure de leur mise sur le marché.

L’idée originale, pour l’époque, due semble-t-il à Bernard Vauquois, fut d’autoriser l’emploi, dans les textes à compiler, de symboles de base rédigés en français (étendu plus tard à l’ensemble des autres langues), et non plus uniquement en anglais. Ce petit plus peut sembler anodin, techniquement parlant, mais il prend toute sa valeur quand on sait le temps que cela prit, face à la pression des lobbys, pour amener les constructeurs à proposer des claviers munis de signes diacritiques propres à chacune de ces langues (accents, tildes, cédilles, etc.), puis les symboles propres aux alphabets distincts : arabes, cyrilliques, chinois…

- la description des différentes phases du système dans le langage même qu’il est censé compiler et interpréter, à savoir l’Algol 60. Cette idée, elle aussi très originale, est à mettre sans doute à l’actif de Louis Bolliet, comme un recours prémonitoire aux techniques postérieures relevant de la méta-linguistique. Un énorme pas en avant, en tout cas, accompli dans le sens d’une meilleure compréhension des grands logiciels et de leurs échanges au sein de la communauté informatique.


(Très petit) détail du tableau général des fonctions dessiné à la main par Maurice Geynet


Le bilan : « On aurait dû faire mieux. »

Avec le recul, les réussites observées avec les premiers systèmes n’ont cependant, dans la durée, pas tenu toutes les promesses escomptées, même dix ans après leur sortie. Les raisons de l’échec relatif (Relative Failure) de la lignée des langages et systèmes de type Algol sont pour l’essentiel à chercher dans deux grandes directions :

- le comportement intransigeant d’un certain nombre des acteurs du projet, notamment au sein des groupes de travail de l’IFIP (International Federation for Information Processing), chargés de trouver des successeurs crédibles à la version de 1960 ;

- les intérêts divergents des tenants d’une programmation scientifique pure et dure, faisant peu de cas de l’efficacité des produits finis, face aux promoteurs commerciaux de techniques d’écriture adaptées aux besoins d’utilisateurs non spécialistes. Le souci d’une performance optimale à l’exécution et d’une grande facilité d’échange de ces produits au niveau planétaire – ce qu’on pourrait appeler le réalisme du marché – a fini par prendre le dessus.

Tout ce contexte a pourtant profité, par la suite, à certaines évolutions déjà identifiées à l’époque, et jugées souhaitables par la communauté scientifique, comme la simplification des méthodes de définition des langages informatiques (comme le prouvera le succès ultérieur du logiciel Pascal), la compilation incrémentable, la modularité et la compilation séparée (places qu’occuperont par la suite les langages PL/1 et ADA) et la programmation par Objets (qui ouvrira la porte aux développements fulgurants de langages tels que Eiffel et Java).

Notons simplement, à propos de ces deux derniers points, que Noël Gastinel lui-même avait, dès l’année 1965, pressenti l’importance des réflexions à mener dans ces directions, quand il cherchait à inclure au compilateur Algol la possibilité de manipuler une variable « imprimante », en y associant automatiquement des propriétés telles que les caractéristiques passives, les procédures associées, les diagnostics d’erreurs, c’est-à-dire tous les ingrédients que ses successeurs réussiront à intégrer à la notion d’Objet.


Extrait d'écriture du compilateur Algol de Louis Bolliet datant de 1967



Conclusion (Ont contribué à ce mégaprojet) :

Ce travail colossal nécessita la participation de toute une équipe de jeunes chercheurs qui contribuèrent de manière souvent déterminante au développement harmonieux du projet. En plus de Jean-Claude Boussard, T.A. Dolotta, en tant qu’analyseur lexical, et Michel Berthaud, en tant que metteur au point de la bibliothèque de procédures standard, entre autres, jouèrent un rôle prépondérant. Mais se limiter à n’évoquer que l’équipe de chercheurs serait sans compter sur l’apport primordial des partenaires chevronnés de la Compagnie IBM France (François Genuys, Guy Mars et René Moreau favorisant, par exemple, l’accès aux centres d’étude de La Gaude et de Corbeil-Essonnes, tandis qu’Alain Auroux et Maurice Guérin assuraient l’intégration au système existant), tant il est vrai que cette collaboration transverse inédite fut l’un des gages du succès de l’entreprise.


Couverture complète de la thèse de Boussard datée de 1964 et soutenue devant les sommités grenobloises des Mathématiques appliquées de l'époque


Pour aller plus loin :

Bibliographie :

  • (en) John W. Backus, Friedrich L. Bauer, Julien Green, C. Katz, John McCarthy, Alan J. Perlis, Heinz Rutishauser, Klaus Samelson, Bernard Vauquois, Joseph Henry Wegstein, Adriaan van Wijngaarden, Michael Woodger, Peter Naur, « Revised report on the algorithm language ALGOL 60. Commun. », dans ACM  6(1), 1963,  1-17

  •  John W. Backus, Friedrich L. Bauer, Julien Green, C. Katz, John McCarthy, Alan J. Perlis, Heinz Rutishauser, Klaus Samelson, Bernard Vauquois, Joseph Henry Wegstein, Adriaan van Wijngaarden, Michael Woodger « Report on the algorithmic language ALGOL 60. Commun », dans ACM  3(5), 1960,  299-314

  •  J. Poyen, Bernard Vauquois, « À propos d'un langage universel », dans IFIP Congress, 1959,  132-137

  • Jean Le Palmec, thèse de docteur-ingénieur : Étude d'un langage intermédiaire pour la compilation d'Algol 60, 1964

  • Jean-Claude Boussard, thèse d'État : Étude et réalisation d'un compilateur Algol 60 pour ordinateur 7040-44, 1964.

Vous pouvez consulter le pdf complet de la thèse d’origine sur Tel, le site de thèses en ligne : https://tel.archives-ouvertes.fr/tel-00009449

ou voir la fiche sur DBAconit : AC_26191

Témoignages de Maurice Geynet :

A la différence des autres langages de l'époque, ALGOL 60 était défini par une carte syntaxique que devaient respecter les développeurs de compilateurs.

Un programme Algol donnait toujours les mêmes résultats quels que soient les compilateurs, ce qui n’était pas toujours le cas, notamment pour les programmes écrits en Fortran !

A l'inverse, ALGOL 60 ne prenait pas en compte les nombres complexes, ce qui pouvait gêner les physiciens.

Sur le CAE 510 en 1965, premier ordinateur disponible dans le laboratoire de Cristallographie du CNRS sur le Polygone scientifique de Grenoble, le compilateur ALGOL écrit par Le Palmec était encore donné avec un manuel manuscrit un an après la soutenance de sa thèse, en 1964.