An extension to ALGOL 60 for the Univac 1107 designed in 1962 by Kristen Nygaard and Ole-Johan Dahl and implemented in 1964 while working at the Norwegian Computing Center (NCC) in Oslo Norway. These were the first two object-oriented programming languages. It introduced the record class, leading the way to data abstraction and object-oriented programming languages like Smalltalk. It also featured coroutines.
Some articles also mention a Myrhaug as a co-worker. Simula was originally designed and implemented as a language for discrete event simulation, but was later expanded and re-implemented as a general purpose programming language.
A SIMULA program is made up of sequences of instructions known as blocks, which act independently to varying degrees, but which are combined to produce the desired overall effect. The simplest programs contain only one block, known as the program block. All other blocks follow the same basic rules, so let us have a look at the single block program, example 1.1. Example 1.1: A simple example
begin
integer Int1;
comment The first SIMULA program written for this book;
Int1:=3;
OutInt(Int1,4);
OutImage
end
SIMULA's philosophy was the result of addressing the problems of describing complex systems for the purpose of simulating them. This philosophy proved to be applicable for describing complex systems generally (not just for simulation) and so SIMULA is a general-purpose object-oriented application programming language which also has very good discrete event simulation capability. Virtually all OOP products are derived in some manner from SIMULA.
Simula is
not simply a "simulation-language": it has all of the capabilities of a
general-purpose language plus support for simulation. Anecdotally, when someone
once asserted that Simula was not a general-purpose language, Nygaard (one of
the designers of Simula) countered by saying that Simula could do everthing that
Fortran and Algol could, and more, so what would need to be removed before it
could be called general-pupose!"