Simula is the name of two
simulation
A simulation is the imitation of the operation of a real-world process or system over time. Simulations require the use of Conceptual model, models; the model represents the key characteristics or behaviors of the selected system or proc ...
programming language
A programming language is a system of notation for writing computer programs. Most programming languages are text-based formal languages, but they may also be graphical. They are a kind of computer language.
The description of a programming ...
s, Simula I and Simula 67, developed in the 1960s at the
Norwegian Computing Center
Norwegian Computing Center (NR, in Norwegian: ''Norsk Regnesentral'') is a private, independent, non-profit research foundation founded in 1952. NR carries out contract research and development in the areas of computing and quantitative methods fo ...
in
Oslo
Oslo ( , , or ; sma, Oslove) is the capital and most populous city of Norway. It constitutes both a county and a municipality. The municipality of Oslo had a population of in 2022, while the city's greater urban area had a population of ...
, by
Ole-Johan Dahl and
Kristen Nygaard.
Syntactically
In linguistics, syntax () is the study of how words and morphemes combine to form larger units such as phrases and sentences. Central concerns of syntax include word order, grammatical relations, hierarchical sentence structure (constituency) ...
, it is an approximate
superset of
ALGOL 60,
and was also influenced by the design of
Simscript.
Simula 67 introduced
objects
Object may refer to:
General meanings
* Object (philosophy), a thing, being, or concept
** Object (abstract), an object which does not exist at any particular time or place
** Physical object, an identifiable collection of matter
* Goal, an ai ...
,
classes,
inheritance
Inheritance is the practice of receiving private property, titles, debts, entitlements, privileges, rights, and obligations upon the death of an individual. The rules of inheritance differ among societies and have changed over time. Of ...
and
subclasses,
virtual procedures,
coroutines,
and
discrete event simulation,
and featured
garbage collection
Waste collection is a part of the process of waste management. It is the transfer of solid waste from the point of use and disposal to the point of treatment or landfill. Waste collection also includes the curbside collection of recyclabl ...
.
Other forms of
subtyping (besides inheriting subclasses) were introduced in Simula derivatives.
Simula is considered the
first object-oriented programming language. As its name suggests, the first Simula version by 1962 was designed for doing
simulation
A simulation is the imitation of the operation of a real-world process or system over time. Simulations require the use of Conceptual model, models; the model represents the key characteristics or behaviors of the selected system or proc ...
s; Simula 67 though was designed to be a general-purpose programming language and provided the framework for many of the features of object-oriented languages today.
Simula has been used in a wide range of applications such as simulating
very-large-scale integration (VLSI) designs,
process modeling,
communication protocols,
algorithm
In mathematics and computer science, an algorithm () is a finite sequence of rigorous instructions, typically used to solve a class of specific problems or to perform a computation. Algorithms are used as specifications for performing ...
s, and other applications such as
typesetting
Typesetting is the composition of text by means of arranging physical ''type'' (or ''sort'') in mechanical systems or '' glyphs'' in digital systems representing '' characters'' (letters and other symbols).Dictionary.com Unabridged. Random ...
,
computer graphics
Computer graphics deals with generating images with the aid of computers. Today, computer graphics is a core technology in digital photography, film, video games, cell phone and computer displays, and many specialized applications. A great de ...
, and
education
Education is a purposeful activity directed at achieving certain aims, such as transmitting knowledge or fostering skills and character traits. These aims may include the development of understanding, rationality, kindness, and honesty ...
. The influence of Simula is often understated, and Simula-type objects are reimplemented in
C++,
Object Pascal,
Java
Java (; id, Jawa, ; jv, ꦗꦮ; su, ) is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea to the north. With a population of 151.6 million people, Java is the world's mo ...
,
C#, and many other languages. Computer scientists such as
Bjarne Stroustrup, creator of C++, and
James Gosling, creator of Java, have acknowledged Simula as a major influence.
History
The following account is based on Jan Rune Holmevik's historical essay.
Kristen Nygaard started writing computer simulation programs in 1957. Nygaard saw a need for a better way to describe the heterogeneity and the
operation
Operation or Operations may refer to:
Arts, entertainment and media
* ''Operation'' (game), a battery-operated board game that challenges dexterity
* Operation (music), a term used in musical set theory
* ''Operations'' (magazine), Multi-Man ...
of a system. To go further with his ideas on a
formal computer language for describing a system, Nygaard realized that he needed someone with more
computer programming
Computer programming is the process of performing a particular computation (or more generally, accomplishing a specific computing result), usually by designing and building an executable computer program. Programming involves tasks such as anal ...
skills than he had.
Ole-Johan Dahl joined him on his work January 1962. The decision of linking the language up to
ALGOL 60 was made shortly after. By May 1962, the main concepts for a
simulation
A simulation is the imitation of the operation of a real-world process or system over time. Simulations require the use of Conceptual model, models; the model represents the key characteristics or behaviors of the selected system or proc ...
language
Language is a structured system of communication. The structure of a language is its grammar and the free components are its vocabulary. Languages are the primary means by which humans communicate, and may be conveyed through a variety of ...
were set. ''SIMULA I'' was born, a special purpose programming language for simulating discrete event systems.
Kristen Nygaard was invited to visit the
Eckert–Mauchly Computer Corporation late May 1962 in connection with the marketing of their new
UNIVAC 1107 computer. At that visit, Nygaard presented the ideas of Simula to
Robert Bemer
Robert William Bemer (February 8, 1920 – June 22, 2004) was a computer scientist best known for his work at IBM during the late 1950s and early 1960s.
Early life and education
Born in Sault Ste. Marie, Michigan, Bemer graduated from Cranbroo ...
, the director of systems programming at
Univac. Bemer was a great
ALGOL fan and found the Simula project compelling. Bemer was also
chairperson
The chairperson, also chairman, chairwoman or chair, is the presiding officer of an organized group such as a board, committee, or deliberative assembly. The person holding the office, who is typically elected or appointed by members of the grou ...
of a session at the second international conference on information processing hosted by
International Federation for Information Processing (IFIP). He invited Nygaard, who presented the paper "SIMULA – An Extension of ALGOL to the Description of Discrete-Event Networks".
The
Norwegian Computing Center
Norwegian Computing Center (NR, in Norwegian: ''Norsk Regnesentral'') is a private, independent, non-profit research foundation founded in 1952. NR carries out contract research and development in the areas of computing and quantitative methods fo ...
got a
UNIVAC 1107 in August 1963 at a considerable discount, on which Dahl implemented the SIMULA I under contract with UNIVAC. The implementation was based on the UNIVAC
ALGOL 60 compiler. SIMULA I was fully operational on the UNIVAC 1107 by January 1965. In the following few years, Dahl and Nygaard spent a lot of time teaching Simula. Simula spread to several countries around the world and SIMULA I was later implemented on other computers including the
Burroughs B5500 and the Russian
Ural-16.
In 1966
C. A. R. Hoare
Sir Charles Antony Richard Hoare (Tony Hoare or C. A. R. Hoare) (born 11 January 1934) is a British computer scientist who has made foundational contributions to programming languages, algorithms, operating systems, formal verification, and c ...
introduced the concept of record class construct, which Dahl and Nygaard extended with the concept of prefixing and other features to meet their requirements for a generalized process concept. Dahl and Nygaard presented their paper on
Class
Class or The Class may refer to:
Common uses not otherwise categorized
* Class (biology), a taxonomic rank
* Class (knowledge representation), a collection of individuals or objects
* Class (philosophy), an analytical concept used differently ...
and
Subclass declarations at the IFIP Working Conference on
simulation languages in
Oslo
Oslo ( , , or ; sma, Oslove) is the capital and most populous city of Norway. It constitutes both a county and a municipality. The municipality of Oslo had a population of in 2022, while the city's greater urban area had a population of ...
, May 1967. This paper became the first formal definition of Simula 67. In June 1967, a conference was held to standardize the language and initiate a number of implementations. Dahl proposed to unify the
type and the class concept. This led to serious discussions, and the proposal was rejected by the board. Simula 67 was formally standardized on the first meeting of the Simula Standards Group (SSG) in February 1968.
Simula was influential in the development of
Smalltalk
Smalltalk is an object-oriented, dynamically typed reflective programming language. It was designed and created in part for educational use, specifically for constructionist learning, at the Learning Research Group (LRG) of Xerox PARC by Alan ...
and later
object-oriented programming
Object-oriented programming (OOP) is a programming paradigm based on the concept of "objects", which can contain data and code. The data is in the form of fields (often known as attributes or ''properties''), and the code is in the form of ...
languages. It also helped inspire the
actor model
The actor model in computer science is a mathematical model of concurrent computation that treats ''actor'' as the universal primitive of concurrent computation. In response to a message it receives, an actor can: make local decisions, create mor ...
of concurrent computation although Simula only supports
coroutines and not true
concurrency.
In the late sixties and the early seventies, there were four main implementations of Simula:
*
UNIVAC 1100 by
Norwegian Computing Center
Norwegian Computing Center (NR, in Norwegian: ''Norsk Regnesentral'') is a private, independent, non-profit research foundation founded in 1952. NR carries out contract research and development in the areas of computing and quantitative methods fo ...
(NCC)
*
System/360
The IBM System/360 (S/360) is a family of mainframe computer systems that was announced by IBM on April 7, 1964, and delivered between 1965 and 1978. It was the first family of computers designed to cover both commercial and scientific applica ...
and
System/370 by NCC
*
CDC 3000 by
University of Oslo
The University of Oslo ( no, Universitetet i Oslo; la, Universitas Osloensis) is a public research university located in Oslo, Norway. It is the highest ranked and oldest university in Norway. It is consistently ranked among the top universit ...
's Joint Computer Installation at Kjeller
*
TOPS-10
TOPS-10 System (''Timesharing / Total Operating System-10'') is a discontinued operating system from Digital Equipment Corporation (DEC) for the PDP-10 (or DECsystem-10) mainframe computer family. Launched in 1967, TOPS-10 evolved from the earlie ...
by
Swedish National Defence Research Institute (FOA)
These implementations were ported to a wide range of platforms. The
TOPS-10
TOPS-10 System (''Timesharing / Total Operating System-10'') is a discontinued operating system from Digital Equipment Corporation (DEC) for the PDP-10 (or DECsystem-10) mainframe computer family. Launched in 1967, TOPS-10 evolved from the earlie ...
implemented the concept of public, protected, and private member variables and procedures, that later was integrated into Simula 87.
Simula 87 is the latest standard and is ported to a wide range of platforms. There are mainly four implementations:
* Simula AS
* Lund Simula
* GNU Cim
* Portable Simula Revisited
In November 2001, Dahl and Nygaard were awarded the
IEEE John von Neumann Medal by the
Institute of Electrical and Electronics Engineers
The Institute of Electrical and Electronics Engineers (IEEE) is a 501(c)(3) professional association for electronic engineering and electrical engineering (and associated disciplines) with its corporate office in New York City and its operation ...
"For the introduction of the concepts underlying object-oriented programming through the design and implementation of SIMULA 67". In April 2002, they received the 2001 A. M.
Turing Award
The ACM A. M. Turing Award is an annual prize given by the Association for Computing Machinery (ACM) for contributions of lasting and major technical importance to computer science. It is generally recognized as the highest distinction in compu ...
by the
Association for Computing Machinery
The Association for Computing Machinery (ACM) is a US-based international learned society for computing. It was founded in 1947 and is the world's largest scientific and educational computing society. The ACM is a non-profit professional member ...
(ACM), with the citation: "For ideas fundamental to the emergence of object oriented programming, through their design of the programming languages Simula I and Simula 67." Dahl and Nygaard died in June and August of that year, respectively, before the ACM Turing Award Lecture
that was scheduled to be delivered at the November 2002
OOPSLA
OOPSLA (Object-Oriented Programming, Systems, Languages & Applications) is an annual ACM research conference. OOPSLA mainly takes place in the United States, while the sister conference of OOPSLA, ECOOP, is typically held in Europe. It is ope ...
conference in Seattle.
Simula Research Laboratory is a
research institute
A research institute, research centre, research center or research organization, is an establishment founded for doing research. Research institutes may specialize in basic research or may be oriented to applied research. Although the term often i ...
named after the Simula language, and Nygaard held a part-time position there from the opening in 2001. The new Computer Science building at the
University of Oslo
The University of Oslo ( no, Universitetet i Oslo; la, Universitas Osloensis) is a public research university located in Oslo, Norway. It is the highest ranked and oldest university in Norway. It is consistently ranked among the top universit ...
is named Ole Johan Dahl's House, in Dahl's honour, and the main auditorium is named Simula.
Sample code
Minimal program
The empty
computer file
A computer file is a computer resource for recording data in a computer storage device, primarily identified by its file name. Just as words can be written to paper, so can data be written to a computer file. Files can be shared with and trans ...
is the minimal
program
Program, programme, programmer, or programming may refer to:
Business and management
* Program management, the process of managing several related projects
* Time management
* Program, a part of planning
Arts and entertainment Audio
* Programm ...
in Simula, measured by the size of the
source code
In computing, source code, or simply code, is any collection of code, with or without comments, written using a human-readable programming language, usually as plain text. The source code of a program is specially designed to facilitate the ...
. It consists of one thing only; a dummy
statement.
However, the minimal program is more conveniently represented as an empty block:
Begin
End;
It begins executing and immediately terminates. The language lacks any
return value
In computer programming, a return statement causes execution to leave the current subroutine and resume at the point in the code immediately after the instruction which called the subroutine, known as its return address. The return address is s ...
from the program.
Classic Hello world
An example of a
Hello world program in Simula:
Begin
OutText ("Hello, World!");
Outimage;
End;
Simula is
case-insensitive.
Classes, subclasses and virtual procedures
A more realistic example with use of classes,
subclasses
and virtual procedures:
Begin
Class Glyph;
Virtual: Procedure print Is Procedure print;;
Begin
End;
Glyph Class Char (c);
Character c;
Begin
Procedure print;
OutChar(c);
End;
Glyph Class Line (elements);
Ref (Glyph) Array elements;
Begin
Procedure print;
Begin
Integer i;
For i:= 1 Step 1 Until UpperBound (elements, 1) Do
elements (i).print;
OutImage;
End;
End;
Ref (Glyph) rg;
Ref (Glyph) Array rgs (1 : 4);
''! Main program;''
rgs (1):- New Char ('A');
rgs (2):- New Char ('b');
rgs (3):- New Char ('b');
rgs (4):- New Char ('a');
rg:- New Line (rgs);
rg.print;
End;
The above example has one
super class (Glyph) with two
subclasses (
Char
and
Line
). There is one
virtual procedure with two
implementations. The execution starts by executing the main program. Simula lacks the concept of
abstract class
In programming languages, an abstract type is a type in a nominative type system that cannot be instantiated directly; a type that is not abstract – which ''can'' be instantiated – is called a ''concrete type''. Every instance of an abstra ...
es, since classes with pure
virtual procedures can be
instantiated. This means that in the above example, all classes can be instantiated. Calling a pure virtual procedure will however produce a
run-time error.
Call by name
Simula supports
call by name so the
Jensen's Device can easily be implemented. However, the default transmission mode for simple parameter is
call by value, contrary to
ALGOL which used
call by name. The source code for the Jensen's Device must therefore specify
call by name for the parameters when compiled by a Simula compiler.
Another much simpler example is the
summation function which can be implemented as follows:
Real Procedure Sigma (k, m, n, u);
Name k, u;
Integer k, m, n; Real u;
Begin
Real s;
k:= m;
While k <= n Do Begin s:= s + u; k:= k + 1; End;
Sigma:= s;
End;
The above code uses
call by name for the controlling variable (k) and the expression (u).
This allows the controlling variable to be used in the expression.
Note that the Simula standard allows for certain restrictions on the controlling variable
in a
for loop. The above code therefore uses a while loop for maximum portability.
The following:
can then be implemented as follows:
Z:= Sigma (i, 1, 100, 1 / (i + a) ** 2);
Simulation
Simula includes a
simulation
A simulation is the imitation of the operation of a real-world process or system over time. Simulations require the use of Conceptual model, models; the model represents the key characteristics or behaviors of the selected system or proc ...
package for doing
discrete event simulations. This simulation package is based on Simula's object-oriented features and its
coroutine concept.
Sam, Sally, and Andy are shopping for clothes. They must share one fitting room. Each one of them is browsing the store for about 12 minutes and then uses the fitting room exclusively for about three minutes, each following a normal distribution. A simulation of their fitting room experience is as follows:
Simulation Begin
Class FittingRoom; Begin
Ref (Head) door;
Boolean inUse;
Procedure request; Begin
If inUse Then Begin
Wait (door);
door.First.Out;
End;
inUse:= True;
End;
Procedure leave; Begin
inUse:= False;
Activate door.First;
End;
door:- New Head;
End;
Procedure report (message); Text message; Begin
OutFix (Time, 2, 0); OutText (": " & message); OutImage;
End;
Process Class Person (pname); Text pname; Begin
While True Do Begin
Hold (Normal (12, 4, u));
report (pname & " is requesting the fitting room");
fittingroom1.request;
report (pname & " has entered the fitting room");
Hold (Normal (3, 1, u));
fittingroom1.leave;
report (pname & " has left the fitting room");
End;
End;
Integer u;
Ref (FittingRoom) fittingRoom1;
fittingRoom1:- New FittingRoom;
Activate New Person ("Sam");
Activate New Person ("Sally");
Activate New Person ("Andy");
Hold (100);
End;
The main block is prefixed with
Simulation
for enabling simulation. The simulation package can be used on any block and simulations can even be nested when simulating someone doing simulations.
The fitting room object uses a queue (
door
) for getting access to the fitting room. When someone requests the fitting room and it's in use they must wait in this queue (
Wait (door)
). When someone leaves the fitting room the first one (if any) is released from the queue (
Activate door.first
) and accordingly removed from the door queue (
door.First.Out
).
Person is a subclass of
Process
and its activity is described using hold (time for browsing the store and time spent in the fitting room) and calls procedures in the fitting room object for requesting and leaving the fitting room.
The main program creates all the objects and activates all the person objects to put them into the event queue. The main program holds for 100 minutes of simulated time before the program terminates.
See also
*
BETA (programming language), a modern successor to Simula
Notes
Sources
*
Further reading
*
External links
(last working version at archive.org, accessed 2022-02-26)*
{{Authority control
ALGOL 60 dialect
Class-based programming languages
Norwegian inventions
Programming languages created in 1962
Science and technology in Norway
Simulation programming languages
Programming languages