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à :
- 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.
- 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.
- 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. . .
|
-
[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
-
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.
-
Cobol n'était guère utilisé alors !
-
Niklaus WIRTH, A proposaI for a Report on a successor of Algol 60,
Mathematisch Centrum, Amsterdam, MR 75, 1965.
- 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]
-
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.
- 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.
- 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.
- 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.
- 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.
- 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.
- Qui travaillait à la Bull dans l'équipe de développement
de logiciels pour le Gamma 30 (sous la direction de M. Sallé).
- 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.
- 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.
- 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 !
- 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).
- 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].
- À 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.
- 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.
-
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.
- 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.
- 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).
- 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.
- 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. . .
- Le langage Beta, beaucoup plus tard, est allé dans ce
sens. Voir, en français, [Vaucher 79].
- 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é.
|