05.10.2026 · Signal Titans Editorial
Des simulations militaires à l’architecture des logiciels modernes
Comment Kristen Nygaard et Ole-Johan Dahl sont passés des simulations d'événements discrets à la définition de l'héritage et de la POO.

À la fin des années 1950, au sein de l'Établissement norvégien de recherche pour la défense, Kristen Nygaard effectuait des simulations de Monte-Carlo appliquées à la conception de réacteurs nucléaires et à la recherche opérationnelle militaire. Après avoir d'abord calculé ces modèles d'événements discrets à la main, il a ensuite transféré ses calculs sur un ordinateur central Ferranti Mercury. Selon la publication Two Bit History, Nygaard trouvait la rédaction de ces modèles statistiques complexes particulièrement fastidieuse et cherchait une syntaxe de langage de plus haut niveau pour décrire comment les événements discrets modifiaient les états d'un système au fil du temps. Au début des années 1960, il a recruté l'informaticien Ole-Johan Dahl afin de concevoir un langage dédié. Leur premier prototype, baptisé Simula 0, était pensé comme une extension et un préprocesseur pour ALGOL 60.
Des stations aux coroutines dans Simula I
La première conception de Simula 0 reposait sur des concepts métiers figés, utilisant des structures spécifiques appelées « stations » et « clients » pour modéliser des réseaux tels que les départs dans les aéroports. Nygaard et Dahl ont toutefois rapidement réalisé que ces constructions rigides limitaient la portée et l'utilité du langage. Pour modéliser des systèmes plus vastes, ils ont remplacé les stations et les clients par des processus sous forme de coroutines. Dans cette architecture, chaque processus associait des attributs de données à une règle de fonctionnement capable de suspendre puis de reprendre son exécution. Même si les processus s'exécutaient conceptuellement en parallèle, une chronologie d'avis d'événements suivait les processus actifs. Cette évolution a rompu la compatibilité avec ALGOL 60 : comme ALGOL ne gérait qu'une seule pile d'appels, le suivi de plusieurs coroutines suspendues nécessitait la gestion simultanée de plusieurs piles d'appels. Nygaard et Dahl ont alors quitté la recherche militaire pour rejoindre le Centre informatique norvégien afin d'y développer un compilateur sur mesure, achevant la toute première version du compilateur Simula I en 1965.
L'étincelle de la gestion des enregistrements
Simula I a commencé à s'imposer sur les ordinateurs centraux UNIVAC et Burroughs B5500, mais ses concepteurs ont compris que ses schémas structurels pouvaient s'étendre bien au-delà de la simple simulation d'événements discrets. Le tournant décisif est survenu lorsque l'informaticien britannique C.A.R. Hoare a publié un article intitulé « Record Handling » (gestion des enregistrements). Hoare y proposait la création dynamique d'enregistrements en cours d'exécution appartenant à des classes d'enregistrements nommées, comparant les noms de classes à des termes généraux comme « table » ou « maison ». Hoare a introduit Nygaard et Dahl aux notions de superclasses et de sous-classes. L'équipe norvégienne a alors compris que si les processus héritaient d'une superclasse commune, le modèle de processus lui-même pouvait devenir une fonctionnalité optionnelle plutôt qu'une enveloppe de haut niveau obligatoire.
La standardisation de Simula 67
Cette intuition fondamentale a transformé Simula en un langage de programmation généraliste structuré autour des hiérarchies de classes et des méthodes virtuelles. En 1967, Nygaard et Dahl ont signé un contrat avec le constructeur informatique Control Data afin de concrétiser cette spécification révisée sous le nom de Simula 67. Lors d'une conférence organisée en juin 1967, des délégués de Control Data, de l'Université d'Oslo et du Centre informatique norvégien ont établi la spécification du langage de base commun Simula 67 (Simula 67 Common Base Language). Des compilateurs ont ensuite été développés pour de multiples systèmes, diffusant ainsi le langage auprès d'utilisateurs dans plus de 23 pays.
Le socle de l'architecture logicielle moderne
Bien que les développeurs écrivent rarement des applications en Simula aujourd'hui, les primitives structurelles établies par Nygaard et Dahl ont profondément façonné la conception logicielle. Les concepts définis dans la spécification de Simula 67 — notamment les classes, l'héritage et les procédures virtuelles — sont devenus le socle structurel fondamental des langages orientés objet tels que C++, Java et Python, définissant ainsi la manière dont les applications modernes modélisent les données et structurent le code.
Illustration éditoriale générée par IA ; ce n’est pas une photographie documentaire.