Simula

(from the English "SIMUlation LAnguage" )

The name of two algorithmic languages developed on the basis of Algol in a Norwegian computing centre and unofficially distinguished as Simula 1 and Simula-67.

### Simula 1.[edit]

A problem-oriented language for simulating systems with discrete events (for example, queueing systems), developed in 1964. The specification of the model assigns processes to the components of a set (clients, machines, materials, etc.). A process has attributes (data structure) and a program of actions (algorithms). The model works on the principle of quasi-parallelism: at every moment only one process is active; by fulfilling its program, it can use its own and other attributes to generate new processes, to plan events for itself and other processes as well as new phases of activity (by applying the concept of discrete time formulated in the language), and to stop itself. The realization of Simula 1 led to the development of algorithmic methods of great generality, enabling one to express other approaches to (not necessarily discrete) simulation. Their inclusion in the language led to the formation of Simula-67.

### Simula-67.[edit]

A language intended as a basis for constructing problem-oriented languages. Its elementary methods include all of Algol-60 (with slight alterations), and the mechanism of extension is based on the concept of a class of objects.

The concept of an object arose from the concept of a process in Simula 1 by abstracting from a comparatively partial organization of quasi-parallel fulfillment in terms of discrete time. Original methods of representing a program and attributes of objects by describing the classes form the main achievement of Simula-67. Especially important is the principle of prefixing by a class, which enables one to include in the description a new class of objects (for example, the class "student" ), attributes and actions of a more general class (for example, "man" ). Prefixation can also be applied to a block in the sense of Algol; such a prefixed block obtains a "prologue" and an "epilogue" from the program of its prefix, and also all its attributes (variables and procedures, cf. Procedure). This enables one to form an elaboration of a problem-oriented language as the description of a class. In particular, by prefixing the standard class SIMULATION, the user obtains access to methods equivalent to the methods of Simula 1 (and described by a base).

The ideas of Simula-67 have had a great influence on more recent programming languages. The concept of an object as a combination of actions and data led to the concept of an actor in many languages for programming problems in artificial intelligence, and influenced the development of the concept of abstract data types. Languages for work with data bases, machine graphics etc., can be described directly using the methods of Simula-67, as well as of simulation languages.

Simula-67 has been implemented on a BESM-6 and ES-computer.

#### References[edit]

[1] |  O.J. Dahl, K. Nigard, "SIMULA - a language for programming and describing sets with discrete events" Algoritm. i Algoritm. Yazik. (1967) pp. 3–72

|

[2] |  O.J. Dahl, B. Murhaug, K. Nigard, "SIMULA-67, a universal programming language" , Moscow (1969) (In Russian; translated from English)