Although SIMULA is an extension of the programming language ALGOL 60, it is not a true extension of it. SIMULA retains the spirit of ALGOL 60 and includes that language as a subset, except for some minor exceptions. The following changes were made to the Kernel:
![]() |
The default parameter mode is not call by name as it is in ALGOL 60. For value type variables it is call by value; for all other quantities it is call by reference.- |
![]() |
All variables are initialized in SIMULA according To their type. This include also the “result variable” in function procedures. ALGOL 60 insists that at least one assignment be made to a result variable. This is not necessary in SIMULA. |
![]() |
Object-oriented programming (classes) encompassing encapsulation, inheritance, information hiding, autonomous activity and strong typing, supporting the concepts of modularizations, generalizations, specializations, abstraction, polymorphism and pseudo-parallelism |
![]() |
Conventional general-purpose algorithmic capability in the style of ALGOL 60. |
![]() |
Basic features for manipulating text strings. |
![]() |
File concept supporting sequential and direct access methods for byte- and record-structured files. |
![]() |
Features supporting discrete event simulation in various styles including the object-oriented process view. |
![]() |
Features supporting 2-way linked lists. More complicated list structures such as trees and lattices are easily constructed from the basic class facilities. |
![]() |
Large repertoire of utility functions. |
![]() |
Object oriented programming. A typical SIMULA program execution consists of a set of interacting processes or *objects*. Objects are incarnations of some prototype or *class*, generated during the execution of the program. Programs written in SIMULA in the object-oriented style preserve more accurately the identities and relationships of the functional entities occurring naturally in the computation. |
![]() |
Strong typing, checked mostly at compile time, ensuring that objects are manipulated in a manner consistent with their specification. |
![]() |
Objects may act independently of each other in "quasi- parallel". This enables the class objects to act as co routines, so that the autonomous activity of any object may be temporarily suspended, later to be resumed at the exact point of suspension. Co routines facilitate a faithful representation of systems composed of not only passive objects but also active ones in which distinct bursts of activity are tightly coupled in the notion of a coherent process. This feature is an extra dimension to those commonly associated with object-oriented languages and is only recently beginning to appear in some of the newer ones. |
![]() |
List processing. The standard class "Simset" may be invoked to add list processing capabilities to the basic language features. The programmer will then have tools for the efficient manipulation of common aggregate information structures, including queues, dequeues, stacks and cyclic buffers. The facilities of Simset can be further refined for more specialized purposes. |
![]() |
Simulation. Application of the standard class "Simulation" converts SIMULA into a powerful tool for discrete event simulation in a style which preserves in the model the inherent structure of the system under study. Object-oriented programming originated in process-oriented simulation and simulation in SIMULA is the epitome of the object-oriented paradigm. |
![]() |
Powerful text handling, dynamic arrays, flexible file handling, etc. |
![]() |
Modularization. Separate compilation of classes and procedures is an integral part of the language. The strong typing extends to separately compiled modules allowing the construction of large SIMULA systems to be partitioned into subtasks, which may be assigned to different work groups without fear of undetected incompatibilities. |
![]() |
Garbage collection. Languages without automatic object storage administration cause their practitioners enormous problems in determining the life span of objects. This leads either to the premature demise of useful objects or to the silting up of memory resulting in unwanted and sometimes irreproducible situations which defy diagnosis. SIMULA has automatic garbage collection, eliminating intractable problems of this nature. |
![]() |
Portability. SIMULA has a rigid standard definition and programs are highly portable between different computer systems (source code compatibility). |