Nygaard’s breakthroughs – the development of Simula and the foundations of object-orientation
Since the mid fifties Nygaard had been responsible for the development of the OR (Operations Research) groups both for the Army and the Air Force. He had very ambitious plans which he realized successfully. Nevertheless he came up against problems: “Our OR success created an unexpected conflict. I wanted OR to be a science and our work to be research, providing support for decisions made by those having the responsibilities for the activities we analysed. I discovered that many in the military establishment were only too happy to have the researcher point out ‘the correct solution’ to some of the hot issues, and that my Director at the NDRE was even more happy to see a development that gave more power to his institute. I tried to counter this by being very careful in pointing out which conclusions could be validly drawn from our work and also the factors that we had not taken into account. I felt that unless we did, both OR as a scientific activity and the decision structure in the defence would be undetermined. The military people appreciated this attitude after some clarifying discussions. The conflict with the Director developed further. He wanted to introduce a variant of OR that we today would label ‘OR Light’, named at the time ‘system analysis’, staffed with people that I felt did not share my views on responsibility structures and validation of results. …. I did not want my group to join this new department. The director wanted that. I did not give in. He did not give in, and he was the boss. As a consequence I left the NDRE in 1960 to build up the Norwegian Computer Centre as a research institute in computing and OR.” (Nygaard, 1996)
The NCC was a semi-governmental research institute established in 1958 and Nygaard was responsible for its new orientation. This was a decisive point in the development of Norwegian computing.
At this time Nygaard was dealing with simulations of different tasks and he made a crucial observation: “Many of the civilian tasks turned out to present the same kind of methodological problems: the necessity of using simulation, the need of concepts and a language for system description, a lack of tools for generating simulation problems. This experience was the direct stimulus for the ideas which in 1961 initiated the Simula development.” (Nygaard, 1978)
The first written reference to Simula, a language which could serve the dual purpose of system description and simulation programming, can be found in a letter dated January 5, 1962 from Kristen Nygaard to the French operational research specialist Charles Salzmann: “The status of the Simulation language (Monte Carlo Compiler) is that I have rather clear ideas on how to describe queuing systems, and have developed concepts which I feel allow a reasonably easy description of large classes of situations. I believe that these results have some interest even isolated from the compiler, since the presently used ways of describing such systems are not satisfactory. … The work on the compiler could not start before the language was fairly well developed, but this stage seems now to have been reached. The expert programmer who is interested in this part of the job will meet me tomorrow. He has been rather optimistic during our previous meetings.” (Nygaard, 1978)
Very optimistic in tone, this letter also points out a very important aspect in the development of Simula, namely that its construction required a high degree of heterogeneous engineering combining:
• Experience in operational research, particularly related to large, complex systems of many different kinds. Nygaard had this experience from his work with the NDRE.
• Experience and knowledge of computer programming language design and implementation. Although Nygaard had had some experience with computer programming at the NDRE prior to 1952, it did not suffice for him to undertake this extensive task. He had to search for programming expertise from outside and found it in Ole-Johan Dahl.
In the course of 1962 the cooperation grew stronger and so Ole-Johan Dahl left the NDRE and joined the NCC in 1963, once he had finished his current project there (implementing a home-made ALGOL-like programming language).
At the NCC there was no initial enthusiasm for Simula. Dahl and Nygaard were told variously that:
1. “There would be no use for such a language as Simula.
2. There would be use, but it had been done before.
3. Our ideas were not good enough, and we lacked in general the competence needed to embark upon such a project, which for these reasons never would be completed.
4. Work of this nature should be done in countries with large resources, and not in small and unimportant countries like Norway.” (Nygaard, 1978)
Nevertheless the board of the NCC supported the development of the Simula language.
Simula I went through four stages:
• Summer of 1961 – Autumn of 1962: Initial ideas based upon a mathematically formulated ‘discrete event network’ concept and thoughts on a programming language which had no specific implementation in mind.
• Autumn of 1962 – September 1963: Development of the early approach. On the one hand increased flexibility introduced by the possibilities of ALGOL 60, on the other hand restricted by the assumption that Simula should be implemented as a pre-processor to ALGOL 60 combined with a ‘procedure package’.
• September 1963 – March 1964: Decision to implement Simula I through a modification and extension of UNIVAC’s ALGOL 60 compiler, based upon a new storage management scheme developed by Ole-Johan Dahl.
• March 1964 – December 1964: Implementation of the Simula I compiler. Minor language modifications and extensions based upon implementation experience and programming test cases. (Nygaard, 1978)