ANNÉES 1960

Simula

En 1961 au Norwegian Computing Center, Kristen Nygaard initie le développement d'un nouveau langage de programmation destiné à la simulation d'événements discrets. Ce projet, qui deviendra Simula, marque le début d'une collaboration étroite avec Ole-Johan Dahl, qui le rejoint en 1962. Les deux chercheurs partagent une expérience au Norwegian Defence Research Establishment, mais leurs parcours diffèrent : Nygaard s'est concentré sur la recherche opérationnelle et les simulations Monte-Carlo, tandis que Dahl a développé des logiciels système et des langages de programmation.

Le développement de Simula répond au besoin concret de disposer d'outils adaptés pour simuler des systèmes complexes comme les réseaux de neurones, les systèmes de communication ou les flux de trafic. Mais la programmation de telles simulations en langage machine ou en Fortran s'avère ardue. Il manque un ensemble cohérent de concepts pour comprendre et décrire la structure et les interactions dans ces systèmes complexes.

La première version du langage, Simula I, est développée entre 1962 et 1964 sous contrat avec UNIVAC. Les concepteurs choisissent de baser leur langage sur ALGOL 60, notamment pour sa structure en blocs et sa sécurité de programmation. L'innovation majeure de Simula I réside dans l'introduction du concept de processus, qui représente des entités capables d'exécuter des actions en quasi-parallèle tout en portant leurs propres données. Ces processus peuvent interagir et être programmés pour simuler le comportement d'objets du monde réel.

Le développement de Simula I nécessite un nouveau système de gestion de la mémoire basé sur des listes chaînées, développé par Dahl, s'affranchissant de la contrainte « dernier entré, premier sorti » (LIFO) d'ALGOL 60 et autorise une existence des processus indépendante de la structure d'appel des blocs. Le compilateur est opérationnel fin 1964 et le langage connaît un certain succès dans la communauté de la simulation. Il est notamment utilisé sur les ordinateurs UNIVAC 1100, Burroughs B5500 et URAL 16. Cependant, Dahl et Nygaard réalisent que les concepts développés pour Simula I pourraient être utiles au-delà de la simulation, pour la programmation générale et la conception de systèmes.

Cette réflexion mène au développement de Simula 67, une refonte complète du langage intégrant les concepts de classe et d'héritage. L'inspiration vient en partie des travaux de Tony Hoare sur la manipulation des enregistrements, présentés lors d'une école d'été de l'OTAN en 1966. La percée conceptuelle survient en janvier 1967 avec l'idée du « préfixage de classe », c'est-à-dire qu'une classe peut en préfixer une autre, créant ainsi une relation d'héritage où la seconde hérite des propriétés de la première.

Simula 67 introduit des concepts fondamentaux qui influenceront durablement la programmation : les objets comme structures de données avec leurs opérateurs associés, les classes comme modèles pour créer ces objets, l'héritage pour spécialiser les classes, et les procédures virtuelles permettant de modifier le comportement des objets dans les sous-classes. Le langage distingue la vue interne d'un objet (ses variables et constantes) de sa vue externe (les procédures accessibles à distance).

La standardisation de Simula 67 s'effectue lors de la Simula Common Base Conference en juin 1967, qui établit le Simula Standards Group pour gérer l'évolution du langage. Les premières installations apparaissent dès 1969 sur les ordinateurs Control Data, suivies par des versions pour UNIVAC et IBM. La diffusion du langage est toutefois freinée par les prix élevés demandés par le Norwegian Computing Center, sous la pression du conseil norvégien de la recherche qui considère qu'un langage de programmation n'a qu'une durée de vie de trois à cinq ans.

Alan Kay et son équipe au Xerox PARC s'inspirent de Simula pour créer Smalltalk, qui popularise la programmation orientée objet dans les années 1970. Les concepts de Simula influencent le développement des interfaces graphiques, d'abord sur le Macintosh puis dans Windows. Le langage inspire de nombreux successeurs, comme le C++ par Bjarne Stroustrup, qui diffuse largement la programmation orientée objet, Eiffel par Bertrand Meyer, et plus récemment Java.

Le succès des idées de Simula s'explique en partie par leur origine dans la modélisation de simulation, où la conception en termes d'objets coopérants est naturelle. La généralité de l'approche a permis son application à de nombreux aspects du développement logiciel. Les concepts introduits par Dahl et Nygaard sont devenus si omniprésents.