Dahl's activity at the Norwegian Defense Research Establishment
In 1952, three years after beginning his studies at the University of Oslo, he was introduced to computers at the Norwegian Defense Research Establishment (NDRE) where he fulfilled his military service obligations. Jan V. Garwick was responsible for the field of mathematical analysis and calculations, and Dahl was placed in the "computing room" led by Garwick's assistant, Kristen Nygaard. It is quite likely that, in this setting, Garwick, Nygaard and Dahl were the first in Norway to develop programs on "large" digital computers. In the years to come, NDRE cultivated a scientific collaboration with the pioneering computer group at the University of Manchester and the electronics company Ferranti. As a result of this tie, NDRE got the first version of Ferranti's Mercury computer in 1957.
Dahl's next project was to develop and implement a "high level" language for numerical computation, called MAC (Mercury Automatic Coding). While Nygaard changed focus to the area of operations research in the mid-1950s, Dahl became Garwick's main collaborator. Together they formed the first real programming group in Norway.
In 1958, Dahl completed the Candidatus Realium degree at the University of Oslo in mathematics. His thesis entitled Multiple Index Countings on the Ferranti Mercury Computer, was formally in the area of numerical analysis, but actually in computer science.
Designing Simula 1 and Simula 67 languages at the Norwegian Computing Center
In 1960 Nygaard had become research director at the Norwegian Computing Center (Norsk Regnesentral - NR). He decided to make an attempt to solve two main problems in operations research, namely, the lack of concepts and language for description and communication about large and complex systems, and the lack of a specialized programming language for simulation tasks. Realizing that he could not do this by himself, he looked to Ole-Johan Dahl, a specialist in programming language, as the obvious collaborator.
They started working together in 1961, and in 1963 Dahl joined Nygaard full-time at NR. Together they created the Simula 1 language (1961-1965) and Simula 67 (1965-1968), introducing the concepts of class, subclass and inheritance, virtual binding of operations, and dynamic creation of objects. The Simula concept of quasi-parallelism reflected that objects may in principle be independent processes running in parallel. Implicit forms of information hiding, through the subclass mechanism, were later also complemented by explicit forms of information hiding.
Scientific impacts of object-orientation paradigm
These concepts, which constitute what today is called object-orientation, have greatly influenced modern programming languages, programming methodology and modeling languages, including UML. The class related concepts in Simula were clearly ahead of their time; it took some 20 years until they gained understanding and popularity. Languages such as Smalltalk, Beta, C++, Eiffel, Java, and C#, have directly adopted Simula's fundamental concepts about objects and classes. Object-orientation is today the dominant style of programming, description, and modeling.
To quote Bjarne Stoustrup:"Simula it is not just an innovative programming language. From the beginning it came with a philosophy of design based on modeling that has had impact far beyond the realm of programming and programming languages." The object-oriented philosophy also underlines the modern use of windows and the graphical interfaces that we all use.
How the paradigm was created
How could Ole-Johan Dahl and Kristen Nygaard, at such an early stage, design a language with all the mechanism that today form the "object-oriented" paradigm for system development? An important part of the answer is obviously that they were extraordinary talented researchers in the field, and with rather different perspectives and personalities, which frequently led to confrontation and heated discussions.
In what concern Dahl, his characteristic as a researcher was the quest for simplicity, elegance, and purity rather than ad hoc solutions with their associated exceptions and compromises. This are some features also reflected in the class concept of Simula.
In addition, it was probably very fortunate that they first designed a language for simulation (Simula 1), and later applied the concepts in a general purpose language (Simula 67). Ole-Johan Dahl has expressed it this way:"A reason for this may be that in developing a complicated simulation model it is useful to decompose it in terms of 'objects', and to have an explicit mapping from external objects to program constructs. A natural way of developing real systems is not much different." Nygaard emphasized that an essential motivation behind Simula was system description, and the need for a language to model real world concepts.