Simula I is usually referred to as the first object-oriented language. Nevertheless, in Simula I the words objects and classes were never used. Instead objects were called processes and classes activities [Nygaard, 2001]. Simula I aimed at being a system description language and a programming language [Nygaard, 1986]. The original goals of the authors was to create a language that included definitions of basic concepts, allowed a formal description of any system, and in which system descriptions should be easy to read and useful for communication [Dahl and Nygaard, 1966]. The interest of converting Simula into a general purpose language, more than just a simulation language, and the idea of adding inheritance capabilities between activities brought up a new version of Simula called Simula 67 [Nygaard and Dahl, 1978].
By reading the (very few) articles that the main authors of the Simula language, Nygaard and Dahl, wrote it is clear that they were conscious of the definition of a system as a set of interacting objects and the role of object-orientation as a modeling or simulation paradigm. What follows can be read as a summary of the Scandinavian school of object-orientation extracted from [Nygaard and Dahl, 1978,Nygaard, 2001,Nygaard, 1986]and [Dahl and Nygaard, 1966]. In this description we will concentrate on the basic ideas that led to the formulation of the object-oriented paradigm but will also include some definitions of concepts that are useful for my dissertation.
According to Nygaard, the idea that led to Simula and object-oriented programming was to create a language that made it possible for people to comprehend, describe, and communicate about systems and to analyze existing and proposed systems through computer based models. The basic concept in Simula is the process, being characterized by a data structure and an operation rule. The individual members of the data structure of a process were called attributes. Simula I was mostly used as a system description language. Most of the time, it was used as a way to gather more information about the system under study and understand it better.
At first, Simula defined a system as containing active components (stations) and passive components (costumers). A costumer was generated by the service part of a station, transferred to the queue part of another... The whole structure was called a network and actions from stations were regarded as happening in discrete moments in time therefore becoming discrete event networks. Then the idea of network was substituted by the more powerful concept of model, consisting of processes that were declared collectively by activity declarations.
Nygaard was not very keen on using the term Computer Science, he preferred to ad-scribe himself to the discipline of Informatics. He had a personal discourse about the meaning of the word and the discipline itself that is interesting for us to understand the whole idea behind object-orientation. Informatics is an applied or empirical science. While mathematics is about relations between specified quantities and operations valid in specified domains, Informatics is about processes and the description of their state transitions. Informatics should be defined like most other sciences (like physics, chemistry, botany, sociology or political science but unlike mathematics) as the study by scientific methods of a domain of phenomena and a perspective selecting a set of characteristics of those phenomena. And the particular perspective selected by Informatics is that of the information aspects or processes. So Informatics is not an abstract science, it is related to real-world phenomena.
If we follow this intellectual discussion and continue defining some of the terms and concepts that already appeared in the previous definition we will end up getting to the concept of model itself. We just mentioned that Informatics is related to real-world phenomena. But what is a phenomenon? A phenomenon is defined by Nygaard as a thing that has definite, individual existence in reality or the mind, anything real in itself. A concept is a generalized idea of a collection of phenomena, based on knowledge of common properties of instances in the collection. A concept is defined by its extension (the collection of phenomena that the concept covers), intension (the collection of properties that characterize the phenomena represented by the concept) and designation (the collection of names by which the concept is known). A phenomenon M is a model of a phenomenon R, according to some perspective P, if a person regards M and R as similar according to P. M is called the model, R the referent and P is the perspective.
In the first definition, we also mentioned the idea of process. We will now dive into it and discover its relation to systems. A process is a phenomenon that we choose to regard as a development of a part of the world through transformations during a time interval called its life span. The basic qualities of a process are: its substance, its states, its transitions, and its structure. A state of an information process is expressed by describing: - the moment at which the state is recorded, its substance, measurement of properties and transformations going on, all at that moment. The structure of the process is the limitations of its sets of states and thus of its possible sequences of states. A process is regarded as an information process when the qualities considered are: its substance, the physical matter that it transforms, the state of its substance, in terms of measurable properties, the results of measurements represented by values, its transitions, the transformations of its substance and thus of its state.
A system is a part of the world that is regarded as a whole, its substance consisting of components, each components state characterized by the states of properties, called attributes, that are selected as being relevant, and by state transitions relating to these attributes and to other components and their attributes.
In object oriented programming an information process is regarded as a system developing through transformations of its state. The substance of the process is organized as the system components, called objects. A measurable property of the substance is a property of an object. Transformations of state are regarded as actions by objects. The substance of the system is organized as objects, building the system's components. All attributes of the substance are properties of objects. Transitions - transformations of state - are regarded as being the result of actions of objects.
``Q: But what is OO then suited to describe?
Q: What is a system?
A: A system is something that you have decided to regard as a system.
Q: What does it imply to regard something as a system?
A: You regard it as a whole, consisting of components, each component has properties and may interact with other components.''
As a conclusion, the basic ideas behind object orientation that make it different from other perspectives, is that: (1) A program execution is regarded as a physical model system simulating the behavior of either a real or imaginary part of the world; (2) physical modeling is based upon the conception of reality in terms of phenomena and concepts (3) a physical model system is constructed, modeling phenomena by objects and concepts by categories of objects or classes.From [Nygaard, 2001]
At this point it is also important to highlight another important figure: Alan Kay. Apart from also being considered one of the most important people in the birth of object-orientation, Alan Kay is also the father of modern graphical user interfaces and the laptop, the main creator of the Smalltalk programming language and the author of such famous sentences as ``the best way to predict future is to invent it''. In [Kay, 1993] he summarizes Smalltalk, and therefore object-orientation, in the following principles:
Other renowned authors have also highlighted this relation between object-orientation and simulation. Timothy Budd in [Budd, 1991] describes the existing relationship between object-oriented programming and discrete event simulation. He finishes the discussion stating that ``computation is simulation''.