from Wikipedia, the free encyclopedia

Simula is a programming language that was developed by Ole-Johan Dahl and Kristen Nygaard in the 1960s at Norsk Regnesentral (Norwegian Computing Center) at the University of Oslo to perform simulations of e.g. B. to be able to carry out physical processes on the computer.

The language is considered the first object-oriented programming language . It was based on the definition of Algol 60 , is block-structured with the usual basic data types and control structures, and introduces classes that combine the concepts of data structures and coroutines .

Simula is considered the predecessor of Smalltalk . Many of the concepts introduced with Simula can be found in modern object-oriented programming languages. The class concept of Simula-67, for example, served as a model for that of C ++ ; even then, the language used some of the key words still used today in modern object-oriented programming languages ​​such as class , new , this .

The word Simula is made up of the constituents simu for simu lation and la for la nguage together.


The language is based on Algol 60 , but supplements it with concepts of objects and coroutines . Simula also introduces the class concept. What became known in later years under the terms data abstraction - the hiding of implementation details - or modularization - the separation of a program into functional units - is already present as a term in Simula . An object combines sub-units of possibly different data types into a new unit. Appropriate procedures and functions are agreed for manipulating an object.

In Simula this implementation is not yet invisible to other blocks, but the first step in this direction has been taken. If there are several objects with a similar structure, which perhaps only differ in a few components, it is possible to agree on superclasses and subclasses, which is nowadays referred to as inheritance .

In addition, there is the possibility of agreeing so-called coroutines so that objects can communicate with each other and act independently; and there are large libraries with functions for managing queues and for executing procedures at fixed times, so that it is also possible to program extensive simulations. The language was not widely used outside of Europe, although it was very common in Scandinavia. In 1987 the last valid Simula standard was adopted. Here is a code example:

Agreement on a class definition:

class datum;
  integer tag, monat, jahr;
  jahr := 1992;

Creation of a "date object":

ref (datum) heute;    (* Variable vom Typ "Zeiger auf datum" *)
heute :- new datum;   (* Erzeugung eines Objektes und Zuweisung
                         der Referenz an "heute" mit ":-"    *)
outint(datum.jahr,6); (* Ausgabe der Jahreszahl *)

Use of date as superclass - the day of the week is added:

datum class tagesdatum;
  ref (string) wochentag;

History of origin

In 1962, Ole-Johan Dahl and Kristen Nygaard met at Norsk Regnesentral (NR) in Oslo, and in the same year the first formal description of the language was presented at the IFIP 62 World Congress in Munich. When UNIVAC supported the Simula project, a UNIVAC 1107 was installed on the NR. A first prototype of a Simula compiler ran in 1964 on the UNIVAC 1107 of the NR and the Simula I manual was published in 1965. In 1967 the revised language version Simula-67 appeared , for which compilers were developed on several mainframe systems that existed at the time. In the 1970s, Simula was widely used in practice, and the theoretical concepts of the language had a major impact on programming languages ​​that were modern at the time. The concepts of object orientation were further developed and finally implemented consistently for the first time in Smalltalk-80. The first Smalltalk version was written in Simula.

It is said that Dahl and Nygaard had worked on ship simulations. The combinatorial explosion of parameter relationships resulted in a confusing variety of ways in which the various attributes of the different ships could influence each other. So the idea came up to classify the different types of ships each as separate objects, each class of objects for their own data and their own behavior was itself responsible.

Simula is still used occasionally today, but the historical influence of the language is more important than its importance in modern programming. In the Scandinavian countries, simula was used as a language of instruction for a long time; the book SIMULA begin is also considered a classic in Germany. Bjarne Stroustrup , who had learned to program with Simula as a student and had to program in C for his future employer AT&T , enriched C with the essential constructs of Simula with the help of a preprocessor ( cfront ) in order to be able to continue programming in the way he had learned. Its extension was initially called C with classes and is now known as C ++ .

A successor to Simula called Beta was developed, but rarely used.


  • Helmut Rohlfing : SIMULA. An introduction . Bibliographisches Institut, Mannheim 1973, ISBN 3-411-00747-8 .
  • GM Birtwhistle and O.-J. Dahl and B Myhrhaug and K. Nygaard: SIMULA begin . Student literature, Lund, Sweden 1973.

Web links