Extrait de Deuxième Colloque sur l'Histoire de l'Informatique en France, Actes édités par Philippe Chatelin et Pierre-E. Mounier-Kuhn Conservatoire National des Arts et Métiers, Paris, mars 1990 ; 2 vol. (366+368 pages + 21p. d'encarts) ISBN 2-9502887-3-1 (vol. 1, p. 289-34)

Control Data Corporation, SIMULA-67 et Paris
Jacques André
Irisa/INRIA-Rennes

Introduction

Simula-67, premier langage avec la notion d'objet, est l'œuvre des Norvégiens Dahl et Nygaard et de leur équipe du NCC à Oslo. Toutefois, leur histoire du langage ne fait qu'une trop rapide allusion au fait que The Control Data projects started in 1967 and were carried out in Paris under the direction of Jacques Newey [Nygaard 78]1 et ignore même le compilateur de Jean Ichbiah alors que ces deux compilateurs (CDC 6000 et CII 10070, tous deux construits à Paris) ont été achevés avant celui écrit en Norvège.

1. Les origines de Simula-67

Vers 1963, alors que la majorité des programmeurs travaillent encore en assembleur2 ou en Fortran, le groupe de travail WG2.1 de l'IFIP prépare déja la succession d'Algol 60. Les deux principaux candidats ont été Algol W, défini par N. Wirth3 et Algol X, défini par E. van Wijngaarden, qui sera finalement choisi comme le successeur officiel d'Algol 60, X prenant la valeur 684.

Mais d'autres langages importants sont aussi en cours de définition comme par exemple des choses aussi différentes que PL/1 (qui sera annoncé en même temps que l'IBM/360 en 1964) et SNOBOL5. C'est aussi en 1963 que Ole-Johan Dahl et Kristen Nygaard démarrent, au Norwegian Computing Center, la définition de Simula 1 (un véritable langage de simulation, basé sur Algol 60[Dahl 66], en opposition à GPSS qui était plutôt un modèle de simulation) et l'écriture de son compilateur sur UNIVAC 1107. Dès 1965, les auteurs prirent conscience que Simula 1 pouvait être considéré comme un general purpose language et réfléchirent à une revision de ce langage en clarifiant leur notion de processus. Mais le déclic est probablement la rencontre avec Tonny Hoare et ses records6. Les Norvégiens étendent ce concept aux processus (et non plus aux seules données), inventent le concept de classe et surtout ceux de préfixe et de virtuel7 et définissent ainsi le premier langage de manipulation d'objets bien avant la lettre. Simula II devient alors Simula 67 ; il est officiellement défini dans [Dahl 68].

2. Simula 67 et Control Data Europ

Fort du succès de son contrat avec UNIVAC pour Simula l, et conscient qu'un langage comme Simula 67 devait être implémenté sur les ordinateurs les plus puissants d'alors (IBM, Univac et Control Data8), le NCC prend des contacts avec ces constructeurs et un accord est signé entre le NCC et Control Data le 23 mai 1987 : Control Data fera (en Europe9 avec l'aide du NCC) l'implémentation sur la série 6000 et l'Université d'Oslo celle sur les 3000.

Control Data Corporation demande alors à Control Data France10 de créer une stucture pour le développement de ce compilateur. Paris embauche ainsi Jacques Newey11 qui dès juin 1967 suit les travaux du Simula 67 Standards Group et monte à l'automne le French Software Development Department12. Le travail sur Simula 67 démarre alors.

3. La réalisation du compilateur Simula 67 pour les 6000

Après une phase d'initiation (tant au langage, qu'aux machines de la série 6000 et au compilateu Algol 60, voire à l'anglais que nous ne maitrisions pas suffisemment !), la coopération avec Oslo démarre (séminaire sur l'implémentation13, séjour de quelques mois de l'une d'entre nous, etc.). Dès le début 68, des choix importants sont faits : le compilateur sera basé sur le compilateur Algol 60 dont on gardera la maximum de choses au niveau compilation mais on réécrira complètement le run time system puisque la gestion de la mémoire de Simula 67 est fondamentalemen différente de celle d'Algol 60. Et comme corollaire : on travaillera en assembleur. Ces choix avaien du bon (on partait de quelque chose d'existant14 ce qui nous permit de démarrer très vite) et du moins bon (la sémantique de Simula 67 différait beaucoup de celle d'Algol 60 et il aurait san doute mieux valu partir de zéro pour cette phase).

Nous n'avions pas grand chose pour réussir ce travail : peu de nous savaient ce qu'était un compilateur, Simula 67 était particulièrement complexe (le listing final devait faire dans les 200 000 lignes), nous n'avions aucune aide matérielle15 , Mai 68 nous a beaucoup perturbés, nous étions plutô isolés tant vis-à-vis de Control Data (où nos problèmes n'intéressaient pas grand monde, mais il fallait que nous suivions les procédures rigoureuses d'industrialisation d'un produit), d'Oslo16 de nême que du milieu universitaire français qui ignorait complètement Simula 6717 , etc. Malgré tou ça, 6000 Simula 67 passait les tests d'acceptation avec succès fin 1969, et toute la documentation était livrée quelques semaines plus tard, soit moins de deux ans après le vrai démarrage. C'était donc le premier compilateur Simula 67 et qui plus est un compilateur commercial (et non un prototype) Il sera suivi par celui de la CIl (Juin 1971) puis par celui des Norvégiens pour CDC 3000.

4. L'après développement

Après quelque semaines de mises au point diverses, démarra la période de maintenance (nous ne nous sommes pratiquement pas occupés des installations sur sites), assurée par Evelyne Midrouillel et un nouveau membre (J.P. Bernoux). Les autres membres de l'équipe furent mis sur de nouveaux projets18, mais nous avons toujours gardé un œil sur Simula 67, faisant quelques conférences ou séminaires dans quelques universités ou à l'IRIA (voir [André 71a,b], [Midrouillet 71]). Mais nous n'avions pas vraiment à nous servir de Simula 67 pour une grosse application. L'occasion nous en fût proposée en 1970 lorsque Control Data Switzerland répondit à l'appel d'offre d'une banque qui désirait équiper son siège d'un ordinateur central où seraient reliées toutes les agences par le biais de concentrateurs. On fit appel à nous pour simuler la proposition et vérifier que les temps de réponse seraient raisonnables. Deux d'entre nous passèrent ainsi près de trois mois à Zürich (avec M. Berney de CDC) et poussèrent Simula 67 dans ses retranchements, prouvant que l'on pouvait faire une très grosse simulation en Simula 67 [André 71c]. Ce travail fut décisif dans le choix de la proposition de Control Data Corporation par la banque19.

5. Conclusion

Simula 67 n'a pas eu le succès auquel il pouvait prétendre20. Je vois, personnellement, plusieurs raisons à celà :

  1. Les milieux universitaires ou de la recherche en général étaient assez mal informés de ce langage qui avait pourtant tant de nouveautés et de qualité :
    • son nom était mal choisi, on le prenait trop pour un langage de simulation alors que c'était un general purpose language ;
    • aucune publication de haut niveau n'a été faite par les auteurs qui n'ont publié que des Reports au NCC dont la diffusion restait confidentielle. Seuls Ichbiah et Morse ont fait un vrai article sur ce langage [Ichbiah 69]. Quant à nous à Control Data, nous n'avons pas fait assez de « publicité » pour ce langage dans les milieux académiques et nous n'étions pas assez médiatiques, mais était-ce notre rôle à nous « industriels » ?
    • le choix de l'implémentation de Simula 67 sur les 6600 de Control Data s'est avéré une erreur car ces machines ont été assez peu répandues dans le monde universitaire21. Par ailleurs ces compilateurs, écrits en 1968-70, bien que spécifiés dans un sous-ensemble de Simula 67 n'étaient pas portables ;
    • basé sur Algol 60, Simula 67 en gardait la lourdeur (exécution des boucles, appels par noms, etc.) et le compilateur ne pouvait pas produire de code vraiment efficace22 ;
    • à la même période, les chercheurs et enseignants étaient plus intéressés par Algol 68 et un peu plus tard la mode passa à Pascal avec sa simplicité naïve.
  2. Les utilisateurs industriels ne voyaient guère l'intérêt de Simula 67 (si d'aventure ils le connaissaient) comme langage général et étaient plus attirés par Fortran, voire PL/1.
  3. Enfin, pour le développement de logiciels, la notion de langage d'implémentation commençait à peine à paraître23 et Simula 67 n'était pas encore épuré pour jouer ce rôle24.

Je pense malgré tout que Simula 67 était un bon langage et qu'il était bon de rappeler le développement parisien de ce produit et qu'indirectement il est ainsi à l'origine d'autres produits à connnotation française (comme Ada ou Eiffel) ou de la qualification de certains ingénieurs25.

Remerciements

J'aurais aimé signer ce papier avec Jacques Newey ou mes ex-collègues, mais je n'ai pas retrouvé leur trace. Qu'ils m'en excusent. Et qu'ils soient remerciés de m'avoir permis de vivre avec eux ce que je considére comme une œuvre de pionnier. . .
 

Références

  • [André 71a] Jacques ANDRÉ, Introduction à Simula-67 (exposé fait au séminaire de programmation de l'Université de Toulouse le 29 Janvier 1971), Note interne ESDD, 24 pages.
  • [André 71b] Jacques ANDRÉ, Simulation d'un réseau de transmission (exposé fait au séminaire de programmation de l'Université de Toulouse le 29 janvier 1971), Note interne ESDD, 17 pages.
  • [André 71c] Jacques ANDRÉ et Françoise DU TRÉMOLET DE LACHEISSERlE, « Le quasi-parallélisme en Simula-67 », Séminaire d'informatique de l'IRIA, 1971, p. 69-91.
  • [Control Data 69] Control Data Corporation, 6000 Simula-67 Reference Manual, publication numéro 602348000, 1969.
  • [Control Data 70] Control Data Corporation, 6000 Simula-67 Internal Maintenance Specifications, C083*-E013*3, 1970.
  • [DahI66] O.J. DAHL & K. NYGAARD, « SIMULA, An Algol Based Simulation Language », Comunications of the ACM, Sept. 1966.
  • [Dahl 68] O.J. DAHL, B. MYHRHAUG & K. NYGAARD, Simula-67 Common Base, Norwegian Computing Center, Oslo, 1968.
  • [Ichbiah 69] Jean D. ICHBIAH et S.P. MORSE, « General concepts of the Simula-67 Programing Language », Compagnie Internationale pour l'Informatique, 1969. Paru dans Annual review of Automatic Programming, 1972.
  • [MidrouiIlet 71] Evelyne MIDROUILLET, «  Simulation d'un système en Simula-67 », Séminaire d'informatique de l'IR1A, 26 mars 1971.
  • [Myhrhaug 69] B. MYHRHAUG & O.J. DAHL, Simula-67 Implementation Guide, NCC publ. noS-9, 1969.
  • [Noodt 68] T. NOODT, CDC 3000 Simula-67 Central Run Time System, Publ. no R230, Université d'Oslo, juin 1968.
  • [Nygaard 78] Kristen NYGAARD & Ole-Johan DAHL, « The Development of the SIMULA Languages », History of Programming Languages, numéro spécial de Sigplan Notices, vol. no 8, Août 1978, p. 245-272.
  • [Vaucher79] Jean VAUCHER, « BETA : un successeur de Simula pour la programmation de systèmes », BIGRE, no 15, juin 1979, p. 4-10.

Notes

  1. Les références entre crochets renvoient à la bibliographie en fin d'article. Elle ne comprend que les titres liés à Simula. Les autres références seront données en bas de page comme cela se fait habituellement en sciences humaines.
  2. Cobol n'était guère utilisé alors !
  3. Niklaus WIRTH, A proposaI for a Report on a successor of Algol 60, Mathematisch Centrum, Amsterdam, MR 75, 1965.
  4. On trouvera quelques éléments sur l'histoire de ce langage, notamment en France, dans Laurent TRILLJNG, « Algol 68, une culture informatique perdue ? », in Philippe CHATELJN (éditeur), Colloque sur l' histoire de l'informatique en France, Grenoble, 3-5 mai 1988, tome 1,447-460. [ACONIT]
  5. Ralph E. GRISWOLD, « A History of the SNOBOL Programming Languages », History of Prograrruning Languages, numéro spécial de Sigplan Notices, vol. 13 no 8, Août 1978, p. 275-308.
  6. Concept qui date de 1965 (voir Algol bulletin no 21) mais qui sera surtout connu plus tard par l'article: C.A.R. HOARE, « Record handling », dans Programming languages (F. Genuys ed.), Academic Press, 1968, p. 291-347.
  7. Simula 67 est aussi le premier langage muni de type abstrait ; en effet les textes sont définis avec toutes les propriétés d'encapsulation et de protection voulues, avant donc que le concept ne soit à la mode plus tard. La notion de paquetage du langage Ada est très inspirée de celle de classe (Jean Ichbiah est l'un des pionniers de Simula 67 en France – voir ce texte, passim) et on retrouve même dans Ada un exemple de paquetage reprenant les principales spécifications de la notion de text de Simula 67.
  8. 0n trouvera dans David E. LUNDSTROM, A Few Good Men from Univac, The MIT Press Series in the History of Computing, 1987, une histoire de Control Data Corporation et son importance, grâce aux 6600, dans les années qui suivirent 1965.
  9. Deux raisons à celà je pense: 1) Proximité d'Oslo et 2) pour les Américains, des choses aussi bizarres qu'Algol ne pouvaient être faites qu'en Europe. Par ailleurs, la livraison d'une 6000 à une grosse société de service en Suisse (où Nygaard avait fait connaître ce futur langage) était liée à la promesse d'y disposer de Simula 67 !
    Le compilateur CII 10070 démarra à Louveciennes en Juin 1968, mais nous l'ignorions (voir note 17 plus bas). Les contrats d'implémentation sur IBM 360/370 et UNIVAC 1100 ne furent signés qu'en 1969.
  10. Ce choix est probablement lié au fait que c'était le pays européen où Control Data avait le plus d'installations. Par ailleurs, les milieux universitaires et certaines entreprises comme la Bull (qui disposait dès  964 d'un compilateur Algol sur son Gamma 60) étaient bien au courant des problèmes de compilation.
  11. Qui travaillait à la Bull dans l'équipe de développement de logiciels pour le Gamma 30 (sous la direction de M. Sallé).
  12. Ce département, bien que relevant de Control Data France pour les questions administratives telles que salaires et remboursements des frais de mission, était rattaché en fait au Research and Development Department, lui même directement attaché à la direction de Control Data Corporation à Minneapolis. Les bureaux ont d'ailleurs souvent été dans des locaux différents de ceux de Control Data France (du moins des technico-commerciaux). En fait, outre celle pour le développement de Simula 67, une seconde équipe a été créée en même temps, qui s'est d'abord occupée d'analyse des concepts des systèmes opératoires. Fin 87, le FSDD comprenait, outre Jacques Newey, pour Simula 67 : Evelyne Midrouillet (Centralienne, venue de la Bull – elle fût la chef de projet du compilateur Simula 67), Françoise du Trémolet de Lacheisserie (Polytechnique féminine, venue du CEA), Jacques Fama (ENSIMAG) et moi-même (3e cycle à Nancy, avec Claude Pair, sur un compilateur Algol 60 pour IBM 1620 ; puis quelques mois au CNRS). La seconde équipe comprenait Henri Beauchataud (ENSIMAG), Jean Gilles-Garcia et David Slosberg (ces deux derniers venant aussi de la Bull), Début 1968 rejoignait l'équipe David Moss, un Anlais ayant travaillé sur le compilateur Algol 60 pour la série 3000.
  13. Où il nous fut remis une version « secrète » et provisoire de l'Implementation guide [Myhrhaug 69] sans lequel nous aurions jamais pu faire ce compilateur.
  14. Et ce quelque chose était très bon : le compilateur de CDC 6600 avait été porté de celui de la série 3000, lui même basé sur le travail de Peter Naur « The design of the GIER Algol compiler », Nordisk Tidsskift fot Informajons Behandling (BIT), 1963, p. 124-140. Les 9 passes initiales de Naur avaient été réduites, par un mécanisme de coroutines, à 4 (ce mécanisme a d'ailleurs servi d'exemple dans le Manuel du langage algorithmique Algol 68 publié par le Groupe Algol de l'Afcet chez Hermann, 1975), tous les mécanismes de pile étaient codés par des macros, le code était très propre et remarquablement documenté, tant en ligne que dans des documents dits IMS (InternaI Maintenance Specification). Du vrai travail de professionnel !
  15. Nous perforions nous mêmes nos cartes, nous ne disposions que d'un peu de place à la Sema où se trouvait une 6600 (Control Data France n'en disposait par pour elle même !) où nous passions nos programmes (par contre, je n'ai jamais vu un centre où les listings de sortie étaient disponibles aussi rapidement).
  16. Avec qui les contacts n'étaient quand même ni faciles ni fréquents. Avec le temps ils devinrent de plus en plus rares. L'une d'entre nous ayant séjourné séjourné à Oslo, j'ai eu toutefois quelques échanges d'informations, dans les deux sens, avec T. Noodt et notamment sur le run time system [Noodt 68].
  17. À l'exception du groupe Algol de l'Afcet dont je faisais partie. Par contre, c'est tout à fait par hasard qu'un soir d'élection en 1969, j'ai rencontré, chez des amis communs, un type qui m'apprit que lui aussi faisait de la compilation, que lui aussi justement écrivait un compilateur pour Simula 67 ! Il s'agissait de Jean Ichbiah qui démarrait donc le compilateur pour la CII-1070. Comme nous étions en avance sur lui, nous lui avons notamment fourni tous nos programmes de test et de quality assurance.
  18. D'une part l'implémentation d'Algol sur des machines pipelines prototypes (Star 100 et la série, jamais commercialisée, PL5O), ou la réécriture de compilateurs Algol pour les séries 3000 et 6000. À partir de cette époque, le FSDD grossit, embaucha des anglais et s'appela European Software Development Department, ouvrit un bureau à Londres, s'attaqua, avec une équipe internationale d'une trentaine de personnes à la compilation de PL/I, etc.
  19. Hélas, car plus tard elle cassa le contrat à cause de délais non respectés, ce qui fut un peu le début des problèmes financiers de Control Data Corporation.
  20. Même s'il y a eu des passionnés de Simula-67, dont par exemple Jean Vaucher, Jean Ichbiah, Bertrand Meyer (Simula 67, qu'il a beaucoup défendu, a profondément marqué son langage Eiffel), etc.
  21. Avec deux exceptions, l'Institut de Programmation à Paris qui avait accès au 6600 du centre de recherche nucléaire de Jussieu et l'Université de Montréal où Jean Vaucher a joué un grand rôle de promoteur de Simula 67. Il faudra, en fait, attendre le compilateur de Jean Ichbiah sur 10070 pour voir apparaître un vrai enseignement de Simula 67 (en 1973, en DEA à l'Université de Rennes notamment).
  22. Jean Ichbiah m'a récemment confirmé que Simula a influencé Ada positivement – les paquetages – et négativement en ce qu'Ada a cherché (et réussi) à éviter les inefficacités de Simula.
  23. Il est intéressant de signaler que je me suis retrouvé avec Jean Ichbiah, vers 1972, lors de réunions, dans le cadre des accords Unidata (CDC + Cii + ICL), pour le choix d'un langage commun d'implémentation de systèmes. Ça n'a pas abouti. Control Data a alors adopté Sympl (que nous avons optimisé dans le bureau londonien de l'ESDD) et Jean Ichbiah a développé LIS avant de définir Ada. . .
  24. Le langage Beta, beaucoup plus tard, est allé dans ce sens. Voir, en français, [Vaucher 79].
  25. Quant à l'ESDD, il fut victime du compilateur PL/1 et des cnnuis financiers de Control Data Corporation qui fit dissoudre ce département définitivement en 1975, alors que plusieurs d'entre nous l'avaient déja quitté.

 [Haut de cet article – This paper Top] – Mai 2007
 [Conférences Histoire de l'Informatique][ACONIT]