Simula

Simula

Simula (Simple universal language) a été créé en 1962 sous la dénomination Simula I par Ole-Johan Dahl et Kristen Nygaard à partir d'Algol 60. Le langage évolua en 1967 sous le nom de Simula 67 en implantant le premier le modèle de classe de Hoare (Record Class, Hoare 1965). Il est donc le premier langage à classes et donc le père de tous les langages à classes tel que Smalltalk, C++, Java, ou encore Eiffel. Il inspira Dan Ingalls dans la conception de Smalltalk qui introduisit la programmation orienté objet. C'est la raison pour laquelle Simula est souvent considéré comme le premier langage orienté objet alors que ce paradigme est introduit bien après Simula 67 dans les années 1970 par Alan Kay.

Sommaire

Historique

Simula a été développé dans les années 1960 au Norwegian Computing Centre d'Oslo, initialement par Ole-Johan Dahl et Kristen Nygaard. Syntaxiquement parlant, c'est un sur-ensemble d'Algol, qui ajoute à celui-ci les concepts, aujourd'hui familiers, des langages à classes comme C++ Java ou autres et de la simulation discrète.

Simula n'a jamais été un simple langage universitaire, puisqu'il a été utilisé pour des applications industrielles jusqu'à aujourd'hui[Quand ?], mais son influence historique est considérée comme plus importante que les applications qui auraient pu être développées avec lui.

Par Simula on entend généralement Simula-67, c'est-à-dire la version de 1967, alors que la version précédente datait de 1962 : Simula I.

Simulation discrète

Comme son nom l'indique, en plus de constituer un langage de programmation généraliste, Simula a été conçu de façon à contenir des bibliothèques de classes offrant un support de concepts spécifiques à la simulation discrète. La classe Process, héritant de Simulation permettait ainsi à l'utilisateur d'hériter pour ses propres classes de simulation du comportement de base d'un processus pouvant s'exécuter en mode dit « quasi-parallèle », à l'aide du concept de coroutine.

Une coroutine est une routine à plusieurs points de sortie et qui, à chaque ré-entrée du flot d'exécution dans celle-ci lors d'un appel à l'instruction Resume, reprend son exécution à la dernière instruction où le flot l'avait précédemment quitté lors d'un appel à l'instruction Detach. Le point d'exécution est stocké dans le LSC : Local Sequence Counter.

Pour clarifier le propos, le programme suivant produirait l'affichage indiqué plus bas :

Begin
  Ref(TwinProcess) firstProc, secondProc;
  Class TwinProcess(Name); 
  Text Name;
  Begin
        ! Initial coroutine entry (creation)
     Ref(TwinProcess) Twin;
     OutText(Name); OutText(": Creation"); OutImage;
        ! First coroutine exit     
     Detach;
        ! Second coroutine entry
     OutText(Name); OutText(": Second coroutine entry"); OutImage;
         ! Second coroutine exit: switch to the twin's coroutine
     Resume(Twin);
         ! Last coroutine entry
     OutText(Name); OutText(": Last coroutine entry"); OutImage;
     Resume(Twin);
  End;
  Begin
     firstProc :- New TwinProcess ("1st Proc");
     secondProc :- New TwinProcess ("2nd Proc");
     firstProc.Twin:- secondProc;
     secondProc.Twin :- firstProc;
     OutText("Starting"); OutImage;
     Resume(firstProc);
     OutText("End");
  End;
 End;

Affichage :

 1st Proc: Creation
 2nd Proc: Creation
 Starting
 1st Proc: Second coroutine entry
 2nd Proc: Second coroutine entry
 1st Proc: Last coroutine entry
 2nd Proc: Last coroutine entry
 End

La bibliothèque de simulation discrète permettait de gérer la file des processus au moyen d'instructions dédiées (Activate, Passivate, Hold, etc.)

Programmation objet

Toutes les constructions qui permettront plus tard la construction de langages facilitant la programmation orientée objet sont d'ores et déjà présents dans Simula 67, qui les inaugure (polymorphisme, encapsulation, etc.) et qui alliait de surcroît la clarté syntaxique de l'Algol :

  • les classes, les attributs et les méthodes
  • l'instanciation via l'instruction New
  • les relations entre objets au moyen de références d'objet : Ref( ) et affectation de références avec l'instruction :-
  • référence sur l'instance courante grâce au mot clé This
  • Test de référence nulle automatique nativement supporté Inspect-Do-Otherwise : Inspect rect do Draw ici, x.Draw ne sera appelé que si x n'est pas une référence nulle (mot clé : None)
  • fonction virtuelles
  • appel de méthode par notation pointée (dot-notation) : <objet>.<méthode>
  • appel qualifié (i.e. statiquement lié) de méthodes virtuelles à l'aide de l'opérateur Qua ou avec Inspect-When
  • reconnaissance de type à l'exécution (instruction Inspect, Is, In)
  • héritage simple entre classes
  • restriction d'accès (Hidden, Protected)
  • classes imbriquées (ou internes)
  • Imbrication sophistiquée des appels du corps de méthode de la classe via l'instruction Inner, qui peut ainsi permettre d'obliger l'exécution de code avant et/ou après l'exécution du corps d'une classe dérivée : on voit déjà se profiler le concept d'assertions, implémentées par Eiffel dans les années 1980, ou même la programmation par aspect, qui sera développée dans les années 1990.
  • un ramasse-miettes en anglais : garbage-collector.

Cette liste succincte permet de prendre conscience de la percée conceptuelle opérée par Simula en 1967.

Voir aussi

Articles connexes

Liens externes



Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Simula de Wikipédia en français (auteurs)

Игры ⚽ Нужна курсовая?

Regardez d'autres dictionnaires:

  • Simula — ist eine Programmiersprache, die von Ole Johan Dahl und Kristen Nygaard in den 1960er Jahren am Norsk Regnesentral (Norwegisches Rechenzentrum) an der Universität Oslo entwickelt wurde, um Simulationen von z. B. physikalischen Prozessen am… …   Deutsch Wikipedia

  • Simula-67 — Simula ist eine Programmiersprache, die von Ole Johan Dahl und Kristen Nygaard in den 1960er Jahren am Norsk Regnesentral (Norwegisches Rechenzentrum) an der Universität Oslo entwickelt wurde, um Simulationen von z. B. physikalischen Prozessen am …   Deutsch Wikipedia

  • Simula — es un lenguaje de programación orientada a objetos (OOP). Fue el primero de los lenguajes orientado a objetos. Varios años después de su desarrollo, casi todos los lenguajes modernos comenzaron a utilizar sus principios de orientación a objetos.… …   Wikipedia Español

  • Simula — 67 Семантика: объектно ориентированный Тип исполнения: компилятор Появился в: 1967 г. Автор(ы): Кристен Нюгор и Уле Йохан Даль Типизация данных: статическая Основные реализации: Cim Испытал влияни …   Википедия

  • Simula 67 — Семантика: объектно ориентированный Тип исполнения: компилятор Появился в: 1967 г. Автор(ы): Кристен Нюгор и Уле Йохан Даль Типизация данных: статическая Основные реализации: Cim Испытал влияни …   Википедия

  • simula — SIMULÁ, simulez, vb. I. tranz. A face să pară adevărat ceva ireal; a da, în mod intenţionat, o impresie falsă. ♦ A se preface bolnav, nebun, beat etc. (pentru a obţine un avantaj sau a evita o sancţiune). – Din fr. simuler, lat. simulare. Trimis… …   Dicționar Român

  • SIMULA —   [Kurzwort aus englisch simulation language], Informatik: in den Jahren 1960 67 aus ALGOL 60 entwickelte höhere Programmiersprache mit speziellen Möglichkeiten zur Durchführung von Simulationen auf Rechnersystemen. Das wichtigste mit SIMULA… …   Universal-Lexikon

  • Simula —   [Abk. für Simulation Language, dt. »Simulationssprache«], imperative Programmiersprache mit speziellen Möglichkeiten zur ereignisorientierten Simulation von Abläufen (Prozessen). Die Sprache wurde 1967 in Norwegen auf Basis von Algol 60… …   Universal-Lexikon

  • Simula — es el primer lenguaje de programación orientada a objetos (OOP) que luego de varios años de su desarrollo, casi todos los lenguajes modernos comenzaron a utilizar sus principios de orientación a objetos. Así fue como se popularizaron términos… …   Enciclopedia Universal

  • SIMULA — das; s Kurzw. aus engl. simulation language> auf dem ↑ALGOL aufbauende höhere Programmiersprache mit speziellen Möglichkeiten zur Durchführung von Simulationen auf digitalen Datenverarbeitungsanlagen (EDV) …   Das große Fremdwörterbuch

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”