(Tony Hoare’s comment about Algol 60)
Object Oriented Simulation (OOS) can be considered as a special case of Object Oriented Programming (OOP). Some principles of OOP like existence of a varying number of instances of interfering objects have been in standard use in simulation environment for a long time, often using other terminology. The SIMULA language (used to be called SIMULA 67) is the first true object oriented language. Being rather old, it still has most (and all important) mechanisms and principles of OOP. With the exception of Beta programming language, other broadly used OOP languages are conceptual subsets of the SIMULA language whose standard was defined in 1967. Some things like classes, inheritance, virtual methods, etc. have been defined in SIMULA long time before they were rediscovered by the OOP boom in the 80s. To learn more about SIMULA, visit the page of ASU (Association of SIMULA Users) with further references.
SIMULA has been criticized that on one side there is a high-level sophistication of the language itself combined with rather limited simulation capabilities except time control on the other side. Lack of supporting simulation tools like transparent collection of statistics, more advanced queues than the basic lists available in the system class Simset, report generation, etc. is caused by the fact that the language has been formally frozen in 1968. This decision was controversial. The advantage is that there is only one SIMULA with minimal differences between implementations. On the other hand future development was made difficult. SIMULA is thus more an OOP background for the creation of simulation tools than a complete user-friendly simulation environment. Probably the best known one of such tools is DEMOS (Birtwistle 1979). DEMOS is not a sublass of the system class Simulation and thus the users can not use processes of Simulation. I am convinced that process-oriented discrete simulation is the most advanced and the most natural way of creating simulation models. The class process of Simulation is the first superclass of this type. Process handling facilities of Simulation are thus a sort of standard that has been copied in many later simulation tools. To keep the processes of Simulation available without any restrictions, I wrote a simple extension to Simulation that makes its use more user-friendly. There are two main classes:
The great event in the history of SIMULA is here: you can get a free port of the CIM SIMULA for Windows that is very easy to install and use. Petr Novak a graduate of the Charles University, Prague (supervised by Evzen Kindler) has created a port that is incredibly short (all in one diskette !!) and that can be installed by everyone within several minutes. To download the CIM/win32 port visit the page Cim 3.33 (port for 32-bit Windows). Note that this version of SIMULA makes use of the whole memory and that it contains an enhanced class Terminal for text screen control including mouse. Graphics is currently not available. UOM students can get the port directly - contact me.
You can also browse the document Introduction to OOP in SIMULA based on a talk presented at the University of Malta on the occasion of the SIMULA's 30th anniversary.
To learn more about the history of Simula there are two very interesting papers:
Holmevik, J.R. (1994). " Compiling SIMULA: a historical study of technological genesis." IEEE Annals of the History of Computing, 16 (4), p. 25-37, 1994. The paper was also presented at the 18th ASU Conference in 1992, and published in the SIMULA Newsletter Vol.20(1), October 1992.
Thanks to Mr. Holmevik's kind permission you can download a local copy of his paper Compiling SIMULA.
This paper was also translated to French language by Vicky Rotarova.
Krogdahl, S. (2003). " The Birth of Simula" This paper is published in the proceedings of the HiNC 1 Conference in Trondheim, June 2003 (IFIP WG 9.7, in coop. with IFIP TC 3). Editors: Janis A. Burbenko jr., John Impagliazzo, Arne Sølvberg.
Proceed to the SIMULA Mailing Center to browse a list of people involved in Object Oriented Modeling and simulation. This list is certainly not complete, so feel free to apply to join.
This page is translated into Serbo-Croatian by Jovana Milutinovich.
This page is translated into Russian by Jim Jerginson.
This page is translated into French by Anna Chekovsky.
This page is translated into Bulgarian by Stoil Dragomirov.
This page is translated into Italian by Gracy Laura.
This page is translated into Belarusian by Sergey Ivanov.
This page is translated into Hebrew by Aish Hatorah.
This page is translated into Maltese by Reena Virk.
This page is translated into Irish by Ava Flynn.
This page is translated into Indonesian by Lisa Kok.