Copyright (C) 1993, 94, 95, 96, 97, 98.

This article originally appeared in: Jan Rune Holmevik. Educating the Machine: A Study in the History of Computing and the Construction of the SIMULA Programming Languages. Trondheim: STS Report 22/94. 1994.

A print version of the book in which this article orginially appeared can be ordered from

Center for Technology and Society

University of Trondheim

N-7055 Dragvoll, Norway



This article is translated to Uzbek language by Babur Muradov.

This article is translated to Turkish language by Umut Arican.


The SIMULA programming language was designed and built by Ole-Johan Dahl and Kristen Nygaard at the Norwegian Computing Centre (NCC) in Oslo between 1962 and 1967.[1] It was originally designed and implemented as a language for discrete event simulation, but was later expanded and reimplemented as a full scale general purpose programming language. Although SIMULA never became widely used, the language has been highly influential on modern programming methodology. Among other things SIMULA introduced important object-oriented programming concepts like classes and objects, inheritance, and dynamic binding.

In broad outline, this chapter seeks to explore the wider history of the SIMULA project. By means of a contextual approach to history, it attempts to weave together the technical development of the language with what is normally seen as its social, economic, and politic context. Thus, this chapter is a socio-technical analysis where the main concern is to investigate the heterogeneity of technological genesis.

As the historian of technology Thomas Hughes has shown in his remarkable studies of Edison and others, technologists in their work often pay little attention to commonly accepted knowledge categories or professional boundaries.[2] He observes that they, in order to accomplish their aims, frequently transcend the limits of what is normally considered technical or scientific and that they habitually amalgamate matters commonly labeled technical, scientific, social, economical, or political. Thus for Hughes, technologists are heterogeneous professionals and their interaction with the wider socio-technical context to which they relate their work becomes the prime focus of interest. His principal argument, in effect, is that one cannot fully comprehend the complex processes of technological and scientific change unless one recognizes that problem-solving technologists see all the analytical categories above--as going together as a thoroughly integrated whole, composing a seamless web, to employ Hughes' own terminology. In accordance with this he challenges us to "follow the actors" and seek explanations for technological and scientific change beyond the narrow internalist narrative of technical development.[3]

As this chapter aims to show, the construction of SIMULA was indeed an effort that required a high degree of heterogeneous engineering on the part of the two principals, Dahl and Nygaard. The main portion of the chapter is devoted to a discussion of how the language was constructed and implemented. In line with what has been stated above, the analysis attempts to incorporate a socio-technical approach to history and thus several "non-technical" aspects of the project are dealt with in some detail. The closing sections provide a brief survey of some of the most significant SIMULA implementations surfacing in the 1970s, as well as a commentary on NCC's SIMULA engagement in this period.



Pulling The Threads Together


Ever since he first started working with operations research back in 1952, Kristen Nygaard had been constantly concerned with ways to conceptualize complex real world systems. One of the major problems he encountered in this pursuit was how to describe the heterogeneity of a system and its operation. In the 1950s, modeling of such systems was usually done through means of symbol notation, i.e. flow-diagrams accompanied by an account of the rules governing the operations of the system.[4] Monte Carlo simulation had proved to be a serviceable tool for analysis of these models and when the Ferranti MERCURY was eventually installed at NDRE in late summer of 1957, Nygaard and his team immediately started to write computer simulation programs.

As I have pointed out in previous chapters, the late 1950s saw the proliferation of a new scheme for computer programming, known as high-level programming languages. Thanks to Jan Garwick, NDRE got a head start in this area and although Kristen Nygaard was not directly involved in this line of work, he was well acquainted with the principles of programming languages. Encouraged by the promising prospects of computer-aided simulation, Nygaard soon started to think conceptually about how he could formalize the procedures for systems description in a way that would allow standardized concepts to be easily processed by a computer. Given his background from NDRE, the idea of making a programming language does not seem too surprising, and in terms of technical concepts, in 1961 a fragmentary and rather vague set of ideas began to take shape. In January 1962 Nygaard wrote to his colleague, the French operations research specialist, Charles Salzmann:

The status on 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 very 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.[5]

As is evidenced from this letter, SIMULA was intended from the very outset to be simultaneously a systems description and a programming language, its construction would thus require both systems reasoning and programming skills. Even though Nygaard had some experience with computer programming at NDRE before he was assigned to operations research in 1952, he did not have sufficient experience or knowledge to undertake an extensive task like this on his own. He was compelled to recruit programming expertise from outside and the best ally he could find, besides Garwick, was his old acquaintance from NDRE, Ole-Johan Dahl. During the spring of 1962 Nygaard and Dahl joined in a series of discussions which in May, 1962 resulted in the first formal language proposal.





In order to better understand Nygaard's reasoning at this point, it is helpful to anticipate the course of events a little by examining how the language appeared when it was first presented publicly in the fall of 1962. The occasion was the second international conference on information processing held in Munich, Germany in late August that year. In the introduction to his paper entitled "SIMULA--An Extension of ALGOL to the Description of Discrete-Event Networks," Nygaard explained the rationale behind SIMULA as follows:

For operational research workers and others studying network systems, there is a definite need for a precise language which allows a description of a network in terms of standardized and generally accepted concepts. Such a description should force the research worker to consider all relevant aspects of the network. SIMULA--SIMUlation LAnguage-- represents an effort to meet this need with regard to discrete-event networks, that is, where the flow may be thought of as being composed of discrete units demanding service at discrete service elements, and entering and leaving the elements at definite moments [sic] of time. Examples of such systems are ticket counter systems, production lines, production in development programs, neuron systems, and concurrent processing of programs on computers.[6]

The early approach to SIMULA was, as evidenced by the quotation above, based on the notion of a mathematically formulated network concept consisting of active stations serving a flow of passive customers. As illustrated in Figure 7, these stations consisted of a queue part and a service part, and the actions associated with the service part were described by a sequence of formalized statements. The customers possessed no similar operating rules, but were instead described through a sequence of variables called characteristics. A customer was supposed to be generated by the service part of a given station, then transferred to the queue part of another station, and subsequently to the service part of that station. Here the customer was "served", and then passed on to the next station in the network, and so on until it ultimately disappeared by not being transferred any further. The actions taken by the stations were regarded as instantaneous, occurring at discrete points in time, and accordingly, this class of systems was called discrete event networks.[7]



Figure 7. Station in discrete-event network.

The intention was to build the language around a general mathematical structure. Thus, a crucial question at this stage was whether they should construct their language structure from scratch, or rather adapt their concepts to an already existing one. Dahl and Nygaard decided early on that if SIMULA was to become a real programming language, and not just an academic "paper language," they would have to join forces with one of the dominant programming languages. In the early sixties ALGOL 60 [8] was the leading programming language in Europe. The elegant and powerful concepts of this language appealed to Dahl and Nygaard and made it, in their opinion, the perfect match for SIMULA.[9] The crucial decision of linking SIMULA to ALGOL 60 was made during the spring of 1962, and would later prove to be both an enormous strength and a serious obstacle. I will return to these technical matters later on, but for the time being let us just establish that ALGOL 60 came to constitute a decisive technical stronghold for the SIMULA project.



New men


In order to understand how SIMULA grew from a set of loose ideas in Nygaard's head into a working programming language it is important to know something about the environment in which this development took place. As we saw in the previous chapter, while NDRE in the 1950s established itself as the leading Norwegian milieu in informatics NCC was pretty much on the sidelines in this area. From 1954 the computing center's primary task had been running NUSSE but when the far more powerful Ferranti MERCURY came to Norway in 1957, this machine soon became obsolete. In 1958 the NCC was given charge of running the Central Bureau of Statistic's DEUCE computer and, as mentioned in Chapter 3, this led to a reorganization of the computing center. According to NTNF's Annual Report for 1958/1959, NCC's new mandate was to work for the application of computing machinery, function as contract institute for computing, and do numerical and statistical computing for public agencies and industry.[10]

Around 1960 it became apparent, however, that NCC was not capable of fulfilling these obligations. The amount of work increased rapidly, whereas the utilization of the DEUCE did not live up to expectations. One reason for these problems was a profound lack of qualified personnel.[11] Another arose from numerous technical problems with the machine itself, and yet a third from the fact that the DEUCE was an extraordinarily difficult machine to program. Emphasis on a simple machine had led to a more complicated coding than were used in any other computer of its day, and given the magnitude of the problems NCC was supposed to solve this posed tremendous difficulties for its staff of programmers.

It soon became apparent to the parties involved that something had to be done and as a first step in strengthening NCC, its board decided, during the spring of 1960, to restate the Centre's objectives by imposing a more research-like profile. As mentioned, toward the end of the 1950s Kristen Nygaard had found working at NDRE increasingly difficult, and thus, when the NCC, in May 1960 offered him a new position he avidly accepted. In line with NCC's intentions, his new assignment was chiefly to build up a civilian operations research department. In order to accomplish this he brought along six members of his previous operations research team from NDRE.

To NDRE this initially came as a severe blow since a large number of its operations research specialists suddenly disappeared. However, under the leadership of Erik Klippenberg the remains of the group at NDRE soon re-organized themselves and moved into Systems Analysis. In the long run this event resulted in far more serious consequences for the institute's informatics research activities. When Nygaard and his group left in 1960, Ole-Johan Dahl gradually became associated with the SIMULA project at NCC, and Jan Garwick later moved to the U.S., much of the expertise that had been built up at NDRE disappeared. The effect of this was that NCC in the 1960s took over as the leading milieu in informatics in Norway.[12]

The DEUCE engagement had seriously affected NCC's ability to execute its commissions and by 1961 it was clear that this had a decisive negative impact on the Centre's financial credibility. Notable financial deficiencies had been recorded both in 1959 and 1960,[13] and the prospects for 1961 did not indicate any immediate improvement. What this above all had demonstrated was the necessity of a highly qualified and professional staff, and in this respect the introduction of operations research in 1960 soon proved to be a step in the right direction. Furthermore, it had also revealed NCC's profound need for a new computer which would improve the institute's capacity to fulfill its mandate.



The Computer Question


The event that would eventually propel the SIMULA project off the paper occurred in 1962 and would eventually also represent the solution to NCC's computer problems.

In April 1961 NCC received an informal proposal from the Danish Computing Center in Copenhagen regarding possible future cooperation.[14] At the time, the Computing Centre's director Nils Ivar Beck, had ideas for a large network of Scandinavian computing centers called the Scandinavian Electronic System. According to the Danish proposition, NCC could, within a few years, become part of this network and would in the short run benefit from such cooperation in several ways. From the point of view of NTNF and NCC's board, the Danish proposition seemed to offer the ideal solution to NCC's most immediate problems, and after a few preliminary meetings during 1961, informal relations between the two computing centers were thus established.

From Nygaard's point of view it was tacitly understood that when he and NCC's director, Bjørn Ørjansen were given the task of drawing up a report on NCC's immediate computer needs, they should conclude by recommending a GIER from the Danish Computing Center.[15] GIER was a recognized medium-sized computer, but in Nygaard and Ørjansen's opinion not the ideal solution for NCC's immediate needs, nor for the benefit of Norwegian informatics in the long run. What they wanted was a real mainframe like English Electric's KDF-9. However, this computer was, at the time, far beyond NCC's financial reach, and consequently they settled for GIER. Based on the conclusions in the Nygaard and Ørjansen report, NTNF decided in February 1962 that NCC should order a GIER from Denmark, and granted 2 mill. NOK. ($280,112) for this purpose.[16]

This was roughly the situation when another important actor, the Univac Division of the Sperry Rand Corporation, entered the stage towards the end of May 1962. In connection with the marketing of their brand-new computers UNIVAC III and UNIVAC 1107, the company arranged an executive tour to the United States for prospective European customers. Kristen Nygaard was invited to participate on behalf of NCC.[17]

Now, at this point let us briefly recapitulate the status on the SIMULA project. As mentioned earlier, the SIMULA concept had, by May 1962, reached a state of semi-maturity, and Dahl and Nygaard felt that they now had a presentable language concept at hand. The preliminary groundwork was done, and it was time to seek out financial resources. As reported by Dahl and Nygaard in 1981,[18] there was no initial enthusiasm for SIMULA in NCC's environment, i.e., apart from the valuable moral support given by the board of NCC. The main objection according to them was that there would be no use for a programming language like SIMULA, and if by any chance there was, such a language certainly existed already. Furthermore it was asserted that their ideas were not good enough, and that they in general lacked the competence needed to embark upon such an extensive project, which for these reasons would never be completed. Finally it was maintained that this kind of work should not be performed in small countries like Norway. From these statements it should be evident that gathering financial support from the Research Council, would indeed be a difficult and protracted mission.

Fortunately though, other options existed, and in an attempt to reverse Univac's sales mission Kristen Nygaard decided to introduce SIMULA to the Americans. As soon as the party arrived in New York, he contacted the Univac Europe representative James W. Nickitas and presented him with SIMULA and another NCC software project on linear programming.[19] Nickitas found Nygaard's ideas interesting, and agreed to set up a meeting with a few influential representatives from Univac's software division. Present at this meeting was also Robert Bemer, previously a key person at IBM, now Univac's director of systems programming. Bemer recalls that:

It was just after I started with UNIVAC that I met a Kristen Nygaard of the Norwegian Computing Center, Oslo. He told me about his project SIMULA. My yearly budget for Systems Programming was about $8 million at that time, for in the neighborhood of 325 people. Dr. Rader had advised me that 5% of that money was my discretion, to do what ever I thought would benefit UNIVAC most! It happened that I was organizing and chairing a session at the IFIP Conference in Munich that August, to which Nygaard's project was a close fit. I invited him to give a paper at that session. It caught my interest, and I wanted SIMULA for the 1107 software repertoire (ALGOL was also in the repertoire, which I could never have made happen at IBM, but at UNIVAC I was RUNNING [sic] the show!). [20]

Bemer had been a sworn ALGOL 60 fan all along and as he listened to Nygaard explaining his ideas for an ALGOL-based simulation language, he became more and more convinced that SIMULA's sophisticated simulation facilities would significantly benefit ALGOL 60 in it's struggle with FORTRAN.[21] By the end of the meeting Bemer announced that he was to chair a session at the IFIP 62 World Congress in Munich, and that he very much wanted a presentation of SIMULA for this occasion. Nygaard immediately accepted this offer as he realized the significance of such an opportunity.[22] The presentation of SIMULA at the IFIP conference first of all implied an important step toward consolidation of the language concepts. Furthermore, it offered a suitable setting for the introduction of SIMULA, and simultaneously provided Dahl and Nygaard with an important entry to the distinguished community of computer professionals.

Even though Kristen Nygaard had managed to draw professional attention to SIMULA, the vital question of financial support was still unsettled. At this point, however, Univac started to move. In connection with the marketing of the UNIVAC 1107, the company needed a demonstration site in Europe as soon as possible. In this regard, Kristen Nygaard must have made quite an impression on the Univac people and really succeeded in convincing them of NCC's professional qualities, because upon his return to Norway, Nickitas approached him with an informal proposal for Univac to establish this demonstration site at NCC. The deal was that the demonstration site should serve promotional purposes for Univac, and NCC would get a 50% discount on an eventual purchase. In return for this generous offer however, Univac wanted NCC to provide them with SIMULA and an implementation of the linear programming system developed by Sverre Spurkland.[23]



A New and Powerful Ally


When Univac made their appearance, the conditions for the SIMULA project changed considerably. As previously explained, the prospects of attaining grants within the NTNF system were not at all promising. Now all of a sudden a new situation had arisen. Through their initiative, Univac had altered the terms by linking the development of SIMULA to NCC's computer acquisition. It is worth noticing that Univac at the time knew that NCC had already ordered a GIER computer from Denmark.[24] In this regard their initiative must be understood as an attempt to subvert the GIER order by offering NCC a better contract. However their strategy was far more subtle than this. In addition to favorable economic conditions, it also implied inside collaboration. By claiming implementations of SIMULA and the LP Package in return for their computer offer, they clearly aimed at enlisting Kristen Nygaard as their ally and inside man in Norway.

From Nygaard's point of view Univac's initiative must really have had an appealing sound to it. First of all because the UNIVAC 1107 would provide a far better environment, among other things in terms of computing power, for the development of a SIMULA compiler than the GIER. Even today, high-precision Monte Carlo modeling and simulation are highly CPU intensive tasks where three-hour supercomputer runs are not uncommon.[25] Another aspect which must also have attracted Nygaard was Univac's conspicuous marketing position and worldwide distribution network. Associated with a powerful computer like the 1107, SIMULA would be launched onto the world market as standard software in a scale that NCC would never have accomplished.[26] However, the most important aspect was probably the prospect of NCC taking on the development costs related to the SIMULA project.

In a broader context a number of other elements might also have influenced Nygaard's reasoning. Here however, we shall settle for perhaps the most momentous one, which also to a high degree was interconnected with the SIMULA effort. From the preceding it should be apparent that Kristen Nygaard was quite an ambitious man, and that his professional aspirations were largely linked to NCC's position as a research center in informatics. In this respect he must have judged the possibilities of attaining a computer like the 1107, in the early sixties among the ultimate solutions in high-tech computer technology, as a God-given opportunity to fortify Norwegian computer science, and undoubtedly his own professional prestige simultaneously. In any case, it was obvious that Univac would constitute a formidable stronghold for the SIMULA project, and that Kristen Nygaard and Univac had common interests in this case, even though they pursued different goals.



Negotiating for the Univac/SIMULA Deal


Back in Norway, Nygaard's mission was, accordingly, to canvass opinion for the Univac proposal at NCC and within NTNF. Since the Research Council had already ordered the GIER computer from Denmark, efforts had to be aimed at converting their interests in this case. Towards midsummer of 1962, Luthar Harr, director of Univac Europe, Stig Wallstam, director of Univac Scandinavia, and James Nickitas came to Norway to announce their formal proposal. In connection with this, members of the board of NCC together with a few influential people within the Research Council were summoned to a meeting with the Univac representatives. At this meeting Univac came up with an offer which meant that NCC could acquire an 1107 at a 50 percent discount, or approximately 7.1 mill. NOK. ($991,400).[27]

During the discussions however, the Univac representatives got the notion that the computer configuration in question was too large and thus too expensive. So in an attempt to make it more appealing to the Norwegians, they subsequently decided to extend their offer. In the following discussions they revealed that they would be willing to offer NCC a software contract on SIMULA and the LP Package. This unexpected offer, seemingly an improvised attempt to entice NCC and Kristen Nygaard in particular, was actually an ace that they had been hiding all along in an attempt to get SIMULA for free. It is useful to recall that, at the time, head of Univac Systems Programming, Robert Bemer, had a yearly budget of about $8 mill. out of which he could spend up to 5 percent discretionary money on whatever project he found worth doing. Since the SIMULA project, in his opinion, was very much worth doing, he had already authorized the necessary funding of the project.[28] Evidence of Univac's sustained interest in SIMULA is found in a letter from Univac to Kristen Nygaard dated 23 October, 1964:

"A major reason for our interest in SIMULA is that we wish to establish a strong systems simulation capability for our own use here in St. Paul. We have been evaluating alternative approaches and your material [progress reports and specifications on SIMULA] is being studied with considerable interest" [29]

This new initiative implied a closer link between SIMULA's destiny and the outcome of Univac's sales mission, and for Kristen Nygaard this must undoubtedly have been a vital spur for further engagement.



A Bigger Fish


With his entrepreneurial maneuverings Nygaard had roused one of the really the big fishes in the Norwegian research system, namely his former boss from NDRE, Finn Lied. As director of NDRE, chairman of the board of IFA, member of NTNF's working committee, and with solid top-level contacts within the Ministry of Finance and the Ministry of Industry, Lied was a man of considerable power and influence in Norwegian science policy and he didn't take lightly to Nygaard's UNIVAC initiative at all.

As early as September 1960 IFA and NDRE had first begun to look into the question of acquiring a new computer to substitute the Ferranti MERCURY. It was argued that in order to maintain a front-line position in high-technology R&D, it was imperative that the two institutes had at their disposal the most powerful and modern computing machinery available. In February 1962, the case was forwarded to the Ministry of Finance, but it soon turned out that things were not going as smoothly as one had hoped for. In May of that year, Lied wrote to his colleague, Karl Holberg, who at the time represented NDRE in the Council for Data Processing in the Public Administration:[30]

The [computer] acquisition has now entered a highly critical phase with the greatest difficulties in the Ministry of Industry. Details orally. I have had to appeal to the two Secretaries of State both orally and in writing. I have yielded in every aspect except for the essentials. This is, in my opinion, necessary as the case now stands. I have put the case partly in the hands (yours) of the Council.[31] [My translation]

As these difficulties unfolded more dark clouds were gathering on the horizon. Kristen Nygaard was back from the States with an exceptionally favorable offer from Univac, and the Research Council was apparently swallowing the bait.

In July NTNF's working committee decided to take the 1107 question under deliberation, and Kristen Nygaard was commissioned to draw up a report on the subject. Univac's offer was effective until 1 October 1962, and Nygaard new very well what was at stake. He had to act fast. While Lied and others who were liable to interfere were away on summer holiday, he put together a report concluding that the NTNF should purchase the UNIVAC 1107. He argued that the needs for computing power in research, public agencies, private commerce and various industries were rapidly increasing, and that a computer like the 1107 would indeed serve present as well as future needs.[32] Another asset was the fact that Univac's offer was approximately 2.5 mill NOK. ($350,140) less than the competitors' (IBM and English Electric) quotations.[33]

For Lied, Nygaard's UNIVAC initiative complicated the plans for IFA/NDRE's computer acquisition considerably. Secretary of the Treasury, Petter J. Bjerve, was of the opinion that one mainframe computer had to be utilized to its full potential before the next should be acquired. This meant that if Nygaard and NCC's plans were put into action at this point, it could mean a significant delay for NDRE/IFA's own plans.

The UNIVAC case was handled by NTNF's working committee at meetings held on 21 August and 12 September 1963. The committee members were generally in favor of the conclusions in Nygaard's report, that is with the exception of NDRE's director, Finn Lied. Lied pointed out that it would be an unfortunate development if NCC were to expand its staff by recruiting expertise from other similar institutions. He was also concerned that the acquisition of a large and expensive computer like the 1107 would jeopardize NDRE's chances of getting a similar computer in the near future.[34] However, despite his concern Lied did not choose to dissent in this case. One reason why he refrained from interfering with NCC's plans was probably that the grants for IFA/NDRE's computer at this point seemed secure.[35] Nygaard and NCC's intention was to finance 60 percent of the machine through private loans, and thus, their computer acquisition would not interfere directly with IFA/NDRE's negotiations with the Ministry of Finance and the Ministry of Industry.

When the contract between NTNF and Univac was signed on 24 October 1962, the software systems to accompany the computer were not yet ready. However, Univac assured NTNF through a penal clause in the contract that these systems would be available in time for delivery. The original delivery date was set for March 1963, but for various reasons was later postponed. When the computer eventually arrived, in August 1963, it became apparent that the software systems provided did not meet the standards promised by Univac. This situation did not improve considerably, and by March 1964 NCC had accumulated a claim on Univac amounting to approximately 1.8 mill. NOK ($250,000). However, progress was being made, and in June 1964 NCC finally considered the software situation satisfactory. By then NCC's standing claim on Univac had become substantial, and important people within the Univac organization found themselves in a most awkward position. So, in order to maintain friendly terms with Univac, and to avoid unnecessary "head-rolling" within that company, NCC agreed to accept an upgrade of the hardware configuration instead of a cash payment. In short, this meant that NCC got a very powerful computer configuration on exceedingly favorable terms.[36] In August 1963, the UNIVAC 1107 arrived in Oslo. After a few weeks of assembling and testing, the computer was finally operative, approximately four months after schedule.



The Department for Special Projects


The SIMULA project now finally seemed to be underway. The vital financial question was at last settled, and the technical premises fairly well clarified. However, despite these promising conditions it would still take close to a year before the development of SIMULA really took off. The reason for this seemingly unexpected delay is partly technical, partly political, and clearly shows how science and research are largely dependent upon external premises.

Ever since Univac's offer was first known to NTNF in June 1962, they had emphasized the fact that an engagement involving such a heavy investment would necessarily imply that the bulk of NCC's available resources had to be directed strictly towards the business side of the institute's activities.[37] Since NCC operated largely on a reimbursement basis, this meant that activities constituting sources of income had to be given top priority. In this respect it can be asserted that the UNIVAC 1107 came to represent a double-edged sword, at least as far as basic research activities were concerned. It is somewhat difficult to establish exactly how this situation might have affected the development of SIMULA, since this project was financed by Univac. It is evident, however, that the 1107 engagement restricted research latitude in general, and gave way for a professional profile which, at least to a certain extent, resembled the situation before 1960. For Kristen Nygaard, who in December 1962 was appointed NCC's director of research, this outlook must have been most disquieting, and he obviously found it difficult to accept that research should be pushed into "a small corner."[38]

And so in an attempt to compromise between these diverging interests, and at the same time establish a more suitable, efficient, and dynamic organization, the board decided to restructure the entire institute by dividing it into a number of independent departments. According to the board's resolution of 11 December, 1962, these new departments were meant to engage in practical commissions as well as applied research on specific target areas within NCC's mandate.[39] The SIMULA project, however, represented a slight problem with regard to this new organizational structure. Since software development had not previously been an integrated part of NCC's activity, and moreover required highly specific professional expertise, it must have been somewhat difficult to ascertain under which department it actually belonged. It was, so to speak, a disturbing element inflicted on NCC as a result of Kristen Nygaard's entrepreneurial activity in connection with the UNIVAC deal.

Conflicts of interests must also have been important with regard to another of the board's reasons for reorganizing the institute. When NTNF decided to go for UNIVAC 1107 this implied, as we have seen, that one had to attach greater importance to economics. This responsibility rested first and foremost with NCC's director, Bjørn Ørjansen, but it also applied to the rest of the staff. As pointed out, Kristen Nygaard did not quite share this opinion, and accordingly he did what he could to prevent basic research from being curtailed by scarce resources. Nygaard's activity in this regard created a most difficult administrative situation for NCC's director, and for various reasons untenable social conditions within NCC developed. The conflict reached a climax in March 1963 when three employees were fired for, among other things, conspiracy against Ørjansen and Nygaard. Since the politics surrounding these events were rather complex, I will not engage in further discussions here. As a result of this crisis, however, Bjørn Ørjansen decided to resign from his position as director of NCC and was released by Leif K. Olaussen in December 1963. For Kristen Nygaard the heavy strain caused by the working conditions in wake of the crisis lead to a sick leave during the autumn of 1963. This difficult situation must also have contributed to slow down in the development of SIMULA.

It might therefore have been a matter of necessity that the board subsequently decided to establish a Department for Special Projects and put Nygaard in charge as director of research. The new department should focus on important problems within NCC's mandate, of such character that they could not be adequately treated by any of the other departments. As examples of this kind of activity the board puts forward: software development, research in new areas of computer application, special projects related to the development of NCC's professional profile, public relations and consulting services for important customers. As we can see, it can easily be asserted that this was a "playground" especially designed to suit Kristen Nygaard. In this way they could keep him occupied, and prevent him from interfering with administrative matters, and simultaneously provide a suitable forum for software development.[40] The Department for Special Projects became a precedent for software development at NCC, which undoubtedly was significant for NCC's later SIMULA engagements.



SIMULA--A Language for Programming and Description of Discrete Event Systems


Let us now return to the technical matters.[41] When Kristen Nygaard and Ole-Johan Dahl started out, during the spring of 1962, they had a rather vague set of ideas for a programming language which should meet a broad set of specifications. If we compare these initial ideas with the actual outcome of their scientific endeavor, the SIMULA I compiler, we find that there is a rather distinct difference between these two positions. In the following I will point out a few reasons for this change of goals.

The early approach to SIMULA was based on an idea of a mathematically formulated network concept associated with ALGOL 60.[42] In general, Dahl and Nygaard's idea was to implement SIMULA as a simulation procedure package along with a preprocessor to ALGOL 60.[43] The preprocessor idea implied that a given SIMULA program first had to be translated to ALGOL and then in turn, compiled into an executable program. In other words, this meant that a SIMULA program had to operate strictly within the framework of ALGOL 60, and as we shall see, this proved to be a serious obstacle when simulation aspects were involved. However, at this early stage they were mainly preoccupied with the idea that customers in a simulation model could be depicted as ALGOL blocks and characterized by using local variables. At that time, this idea looked rather promising since ALGOL's recursive block mechanism did cater for multiple occurrences of user-defined data structures.[44]

By the spring of 1963 however, Dahl's work on the storage management scheme made it quite evident that ALGOL's block structure and strict dynamic single stack regime were incompatible with an adequate implementation of SIMULA's sophisticated simulation facilities. In short, the problem facing Dahl and Nygaard at this stage was that ALGOL 60's procedure calls and storage allocation mechanisms operated strictly according to a stack principle, whereas objects (customers) in a simulation model rather tended to behave according to the queue principle. In light of this, they subsequently realized that they would not achieve their design objectives unless they found a way to get around ALGOL's rigorous stack regime.

During the summer and autumn of 1963, while Kristen Nygaard was preoccupied with problems in the political arena, Ole-Johan Dahl commenced work on a new storage allocation scheme based on a two-dimensional free area list.[45] With this new scheme at hand, they found that they were no longer tied by the restrictions imposed by ALGOL 60, and thus they eventually decided to drop the preprocessor idea completely. Instead they decided to implement SIMULA through a modification and extension of Univac's ALGOL 60 compiler. This change of strategy opened a whole new set of perspectives on SIMULA, and accordingly, they were compelled to start over again. This time they derived the basic concepts through a variety of thorough case studies, ranging from job shops via airport departure systems to epidemiological studies.



Figure 8. Flowchart portraying a simple queue system with two clerks.

With regard to the original network concept, they eventually discovered that this could just as well be regarded the other way around, i.e. active customers making use of passive stations. This in turn led to the realization that an in-between, or dual point of view could profitably be adopted. From this perspective the customers were regarded as active in moving from station to station, but passive in their interaction with the service parts of the various stations. (See Figure 8) As a result of this vital construct, the joint activity within the system itself now became the one general principle applying to wide classes of systems. In light of this new understanding they found that the simple network concept seemed too narrow and thus inappropriate, and for these reasons it was subsequently abandoned. Instead Dahl and Nygaard introduced the far more powerful process concept which came to constitute the basic, unifying feature of the SIMULA I language. In short, a process can be understood as a generalized ALGOL procedure with quasi-parallel properties.[46] This decisive breakthrough, in February 1964, implied that the simple notion of a system being described by a general mathematical structure had been substituted by a much more powerful concept. The system was now understood as consisting of a series of interacting processes operating in quasi-parallel as ALGOL stacks within the main program execution.[47]

By March 1964 the design phase had finally come to an end. It was now time to translate the paper version of SIMULA into an operating compiler. The implementation effort was solely conducted by Ole-Johan Dahl. On specific ALGOL related items he had, however, some assistance from two American software engineers Ken Jones and Joeseph Speroni, the latter was the responsible for the Case Western Reserve 1107 ALGOL.[48] The implementation effort proceeded throughout the year, and in December 1964, the first prototype of the SIMULA I compiler was up and running on NCC's UNIVAC 1107.

According to the SIMULA I manual which appeared in May 1965, the two main objectives of SIMULA were:

1. to provide a language for a precise and standardized description of a wide class of phenomena belonging to what we may call "discrete event systems."

2. to provide a programming language for an easy generation of simulation programs for "discrete event systems."[49]

Nygaard's idea of a language for system description and simulation programming had become a reality. During that year three courses were given in the language, and its use picked up so fast that in his report on the use of SIMULA, Nygaard notes that by late 1965 NCC had "no longer complete information on which jobs are done by SIMULA since there are many users outside the institute."[50]

During the first year, SIMULA was applied to a wide array of operations research problems. In his report, Nygaard makes reference to production planning, administration, inventory, transportation, harbors, planning and scheduling, renewal, computer operation and design, and analyses of various social systems. As an illustration of the specific problems SIMULA was applied to that first year, Nygaard mentions, among other things, an analysis of the layout of the new job foundry at Raufoss Amunisjonsfabrikker where the object was to find the proper arrangement and dimensioning of cranes, storage points etc. The SIMULA program for this job was punched on 1130 cards. Compiling time was 50 seconds, and a simulation of two and a half days of operation ran in 22 seconds. He also mentions that an airport departure system was being developed in cooperation with the Scandinavian Airlines System (SAS), that a large study on the transportation, pre-production, and storage system of a Norwegian paper mill had been conducted, and that two large-scale harbor simulations were made in SIMULA.





When Dahl and Nygaard first commenced work on SIMULA during the spring of 1962, their idea was to develop a simple simulation procedure package along with a preprocessor on top of ALGOL 60. This seemingly straightforward approach turned out to be a dead end, when they ultimately ran up against the rigorous stack regime of ALGOL 60. As we have seen, the solution to this problem was found in Ole-Johan Dahl's storage management scheme from November 1963. From then on their ambitions grew and in wake of Dahl's path-breaking new allocation scheme a breakthrough for the entire SIMULA effort was made. From the end of 1963, it is evident that they now strove toward general, unifying concepts in order to realize a real high-level programming language. In this respect, SIMULA I should be seen as an intermediate position en route to what was later to become SIMULA 67.



Toward Generality


During 1965 and 1966 Dahl and Nygaard spent a lot of time introducing and teaching SIMULA, and the use of the language rapidly spread to Sweden, Germany, the Soviet Union, as well as a number of other countries. Apart from the UNIVAC version, SIMULA also became available on Burroughs B5500 computers during 1968, and later on, the Russian URAL-16 computer. However, Dahl and Nygaard's ambitions were greater than this. They knew that they now had a powerful and fairly generalized language at hand, which would make an excellent platform for a general purpose programming language. Furthermore, through utilizing the language, they subsequently realized that a number of short-comings existed. In his report on the use of SIMULA Nygaard mentions that they saw a need to implement tracing and debugging facilities in order to make it easier for the user to detect and correct errors in the SIMULA source code.[51] Among other things they had also become aware of an obvious lack of serviceable tools for expressing common properties between interrelated processes in the system. Moreover, it was obvious that the sophisticated simulation facilities embedded in SIMULA I were too heavy a burden to carry for a programming language with general purpose ambitions, and finally they had become aware of certain serious deficiencies in the UNIVAC ALGOL 60 compiler itself.[52]

In the autumn of 1965 the Norwegian Institute of Technology in Trondheim contacted NCC and expressed it's interest in implementing a new and improved ALGOL compiler for the 1107. Their idea was to design this compiler especially with SIMULA in mind. From Dahl and Nygaard's point of view this sounded like a promising suggestion, and for some time during 1966 relations with a computing team headed by Knut Skog in Trondheim were maintained.

As mentioned, since late 1963, early 1964 Dahl and Nygaard had invested an increasing amount of time trying to come up with as general and unifying concepts as possible. As this pursuit proceeded throughout the summer and autumn of 1966, they became more and more preoccupied with the opportunities embedded in Tony Hoare's record class construct, first presented in ALGOL bulletin no. 21, 1965. After having carefully examined Hoare's record proposal they eventually came to the conclusion that, even though it obviously had a number of very useful properties, it failed to fully meet their requirements. What they were really looking for was some kind of generalized process concept with record class properties.[53]

The answer to their problem suddenly appeared in December 1966, when the idea of prefixing was introduced. A process, later called an object, could now be regarded as consisting of two layers: A prefix layer containing references to its predecessor and successor along with a number of other properties, and a main layer containing the attributes of the object in question. In addition to this important new feature, they also introduced the class concept, which can roughly be described as a highly refined version of SIMULA I's activity concept. This powerful new concept made it possible to establish class and subclass hierarchies of concatenated objects. As an example we can imagine the class `vehicle', which can be understood as a generalization of the subclasses `car', `bus', and `truck'. In other words, the basic concept of speaking in general and more specific terms had been adopted as a way of expressing reality in the context of a programming language. Having these general, unifying tools at hand, Dahl and Nygaard immediately decided to commence designing a new, general high-level programming language in terms of which an improved SIMULA I could be expressed.[54] In the preceding I have made a rather fleeting reference to the fact that Dahl and Nygaard wanted to make the new version of SIMULA a general purpose language. In what follows I will try to point out some of the reasons for this.

As heralded by Nygaard at the IFIP-62 World Congress and further evidenced by the SIMULA manual of May 1965, SIMULA I was a special-purpose language geared toward operations research problems. The 1960s saw an enormous proliferation of these so-called special-purpose languages. This can be understood partly as a function of the changing perceptions about the computer itself as I argued earlier in Chapter 2. Since the computer increasingly came to be seen as general-purpose device, special-purpose software took over the function of configuring it for specialized application areas like simulation, for example. Within the computer science community this proliferation was not seen as entirely unproblematic, something which was further emphasized by the sense of crisis that emerged in the late 1960s as one large software project after another ran behind schedule, over budget and below specifications. During the 1960s, the call for a more concerted effort in programming language design grew stronger, and one solution that more and more language developers found promising was the general-purpose language, the programming language that was so general in nature that it could be used for all conceivable purposes. At an IFIP TC 2 [55] conference at Lysebu outside Oslo in May 1967, Jan Garwick even went so far as to say that:

The only salvation for the programming world is the really general purpose language. Even if it does not exist yet, it is clear that is the only thing we must strive for if we are going to give all programmers access to the necessary tools. We can not just produce new special purpose languages the whole time, because they will not be widely implemented. [56]

As I noted in Chapter 2, the very first effort to produce a universal, machine-independent language was ALGOL, developed around 1960. This project, born out of a joint effort between leading computer scientists [57] from both sides of the Atlantic, came to form the basis for most theoretical and practical language and compiler work during the 1960s and well into the `70s. Although ALGOL was intended to be a general-purpose programming language, it came to be seen essentially as a tool for numerical computations. To bring the language more in line with the original intentions, in 1964 a new committee (Working Group 2.1) set out to "Clean up ALGOL 60"[58] and in programming language circles a new name, ALGOL X, started to appear.[59]

While this was happening, another major general-purpose language project was being conducted at IBM. In Chapter 2 I made reference to this language in connection with the discussion of IBM's new product line, the System/360. As opposed to ALGOL X (today known as ALGOL 68), which was a multinational venture coordinated by IFIP, PL/1 was an industry effort pushed forth by IBM. In the 1960s these two large and prestigious projects spurred a considerable interest in the idea of general-purpose languages, and this is background, I think, against which we must view Dahl and Nygaard's SIMULA 67 effort. To use Nygaard's own words:

Dahl and I started out to make a simulation language, but of course we have spent so much time with all these people working on general purpose languages, that I must admit we have to some extent fallen in love with the concept of general purpose languages.[60]

As a result of a proposal made by Ole-Johan Dahl, at the time the Norwegian representative to IFIP Technical Committee 2 (on programming languages), in the autumn of 1965, it was decided that an IFIP Working Conference on simulation languages should be held in Oslo in May 1967. There is little doubt that acknowledgment from a professional forum like IFIP TC-2 would constitute a professional stronghold of major importance for their efforts, and when the conceptual breakthrough finally came at the turn of the year, they were determined to present a new and revised version of SIMULA at this IFIP Working Conference.[61]



SIMULA 67 Common Base


Prior to the Lysebu conference Dahl and Nygaard had been working desperately to finish their Class and Subclass Declarations paper. Despite the short time available to them they managed to incorporate all the important new aspects, and thus this paper became in a sense the first formal definition of the new language. The conference's response to SIMULA 67 was positive, and the project now finally seemed to be on the right track.

Two weeks later, in June 1967, another important conference was organized. The purpose of this conference was mainly twofold, first to define a standard for the exchange of SIMULA programs between various implementations, called the Common Base Standard, and secondly to initiate implementation projects for the Control Data 3000 (upper and lower) series and the UNIVAC 1100 series. Once again Dahl and Nygaard came up with a number of new proposals. One of the things that they wanted to incorporate was a unification of the related notions of Type and Class. The new proposal underwent serious discussions, but after having considered the implications and difficulties involved, the pragmatic approach prevailed and the implementers subsequently rejected it. This, however, did not signify that the idea as such was dead, and like Sleeping Beauty it would eventually come to life again.[62]

Items related to string handling and I/O had not been discussed in any of Dahl and Nygaard's many proposals to the conference. However, the implementers unanimously stressed the need to have these things incorporated and defined as part of the Common Base Definition. In order to secure high standardization and portability, it was therefore decided to furnish SIMULA with these facilities. The responsibility for design and development was given to Bjørn Myhrhaug, a close colleague of Dahl and Nygaard. The results of his work were accepted at the first meeting of the SIMULA Standards Group (SSG) in February 1968, after which SIMULA was formally frozen.[63]



Into the World: The SIMULA 67 Compilers


As has been stressed, Dahl and Nygaard had great ambitions for SIMULA 67. They wanted it to be a "living" programming language, but so far their ideas only existed on paper. They envisioned at the time that only a few of the many programming languages developed in the 1960s would still be in use by 1980 and if SIMULA was to become one of these, it was essential that implementations of the language were available on the important mainframes. Around 1970 this basically meant the UNIVAC 1100 series, and the IBM 360/370 series of computers.[64]





From 1966/67 research scientists from NCC had been working with Knut Skog's team in Trondheim to develop a new ALGOL compiler (NUALGOL) for the UNIVAC. Whereas the intention had been that this should be both an ALGOL and a SIMULA compiler, it soon became apparent that the differences between these languages and their respective implementation techniques made such a unification impractical.[65]

Partly due to these technical problems and partly because NCC felt a certain obligation toward SIMULA I and its user community, during 1968 it was decided that NCC should withdraw from the NUALGOL project and that a SIMULA 67 implementation for the 1107 be developed instead.[66]

The UNIVAC SIMULA team, consisting of Ron Kerr and Sigurd Kubosch with some assistance from Bjørn Myhrhaug, did not start from scratch. The code of the ALGOL implementation served as a guide throughout the entire effort and wherever they could this code was cannibalized and reused. This way the only areas that needed fresh design and implementation were related to SIMULA-specific items. Working so close to the ALGOL code, Kerr and Kubosch took great pains to ensure that wherever possible SIMULA's code generation and runtime performance was competitive with that of ALGOL. This painstaking work contributed largely to the fact that the UNIVAC SIMULA compiler became one of the fastest SIMULA systems ever made. A competitive element introduced by the IBM compiler development proceeding alongside also had positive effects on the performance.

For various reasons the Research Council decided in September 1969 to sell the 1107, and hand over the profitable computing commissions, which that year alone amounted to approximately 1.2 mill. NOK ($167,832), [67] to Computas, a company owned by the large and influential ship classification society Det Norske Veritas. [68] In spite of the abandonment of the old 1107 the UNIVAC SIMULA project, however, continued and the new target machine became the UNIVAC 1108.

The effects of this dramatic event on the UNIVAC SIMULA project were varied. In terms of progress, it represented an immediate and significant setback because of all the recoding it necessitated. However, the UNIVAC 1108 and its new operating system (EXEC 8), in many ways state-of-the-art around 1970, provided a much more powerful and efficient environment that in the long run actually had quite a positive effect on the compiler performance. Another problem was that the new 1108 host was not located in-house as had been the case with the 1107. At a time when batch processing was the order of the day this undoubtedly contributed to a slowing of the project. In any event, progress was being made and in March 1971 the first commercial version of UNIVAC 1100 Series SIMULA was released.[69]

Univac was not unanimous in its reactions to the new SIMULA compiler. First of all, SIMULA I had been a useful but not very important part of their software repertoire, and they felt no market demand for a new and improved version. Secondly, they had spent a substantial amount of money on the SIMULA I project, and saw no reason why they should share SIMULA with other manufacturers. Nevertheless, in 1968 a long series of discussions between NCC and Univac concerning a possible transfer of rights to the compiler took place, but no contracts were ever signed. [70]



The IBM 360/370 SIMULA


In the case of the IBM 360/370 compilers, the situation was somewhat different. When Nygaard and his team in 1967/68 expressed their interest in developing SIMULA 67 compilers for IBM and UNIVAC the conditions for doing this were stated very clearly. Firstly, such projects could only be undertaken if sufficient external financing was at hand, and secondly, that one, in the course of 5 years, would be able to cover the total expenses by selling the compilers on a strictly commercial basis. [71] According to these pre-conditions Kristen Nygaard and the private consultant Harald Omdahl started the tedious and difficult task of putting together a consortium of firms which would be interested in investing money in the compiler development projects. The hunt for investors went on with little or no success until Nygaard eventually meet with representatives from the Swedish Research Institute for National Defence (Swedish abbreviation: FOA) in the summer of 1969. FOA had, for many years, been wanting to make use of SIMULA in connection with their research activities, and as they had recently purchased an IBM/360 computer they were naturally very interested in Nygaard's proposals regarding the development of a SIMULA 67 compiler for this particular system.[72] On the basis of this FOA subsequently agreed to support the IBM 360/370 project by funding the participation of two Swedish software engineers, Lars Enderin and Stefan Arnborg. Apart from this, IBM also made an important contribution by giving NCC a total of 240 hours of computing time to be used in connection with the development and testing of the compiler.[73] After nearly three years of extensive work the IBM compilers was released to the public in May 1972. Bjørn Myhrhaug had been in charge of the project and, in addition to Enderin and Arnborg, the team also consisted of Graham Birtwistle who was responsible for the syntax analysis, Francis Stevenson who took care of the code generation part, Paul Wynn on the CMS modification, and last but not least Karel Babcicky, who was responsible for semantics processing, and who, during the second part of the 1970s, was responsible for the entire SIMULA activity at the Norwegian Computing Centre. [74]

Even though the costs related to the two implementation projects had been estimated at approximately 15 person-years each [75], and both were conducted at NCC under the auspices of Bjørn Myhrhaug, they were very much different. The IBM team worked within a well-supported and carefully planned project, whereas the UNIVAC team was much more loosely organized, worked with less external support, and over a longer period of time. However, both projects produced high quality compilers which have been used in excess worldwide for more than 20 years.[76]



The Control Data SIMULA


In the previous sections I have tried to give a general outline of NCC's own compiler development projects. These two compilers, however, were not the first SIMULA compilers available. Prior to the Common Base Conference, Kristen Nygaard had managed to get Control Data Corporation (CDC), through important Norwegian customers, interested in SIMULA implementations for their 3000 (upper and lower) and 6000 series of computers.[77] In May 1967 contracts were signed, and in Paris a team directed by Jacques Newey commenced work on a SIMULA 67 implementation for the CDC 6000. This compiler was later refined by SHAPE [78] Technical Center in the Netherlands, and a new version for the CDC Cyber 70 series was developed in 1973/74 by NDRE. In Norway, a team from the University of Oslo, headed by Per Ofstad, carried out the CDC 3300 (lower series) implementation, while another Norwegian team from NDRE and the University of Oslo's Joint Computer Installation at Kjeller (KCIN), headed by Svein A. Øvergaard, handled the CDC 3600 (upper series) implementation. The two projects were organized as a joint enterprise under the auspices of Per Martin Kjeldsaas from KCIN, and both were completed during the spring of 1969. Some financial support was provided by Control Data Europe, which in turn obtained marketing and distribution rights, whereas the maintenance responsibility for the respective compilers remained with the University and KCIN.[79]

In addition to these projects, compilers for CII 10070 and IRIS 80 were implemented by the French company Compagnie Internationale pour l'Informatique (CII). The two identical systems were released in 1972, and were provided free of charge to CII's customers.[80]



The DEC System-10 SIMULA


Another important SIMULA development took place in Sweden in the first half of the 1970s, this time the target machine was Digital Equipment's PDP-10.[81] Around 1970 the Swedish Research Institute of National Defense (FOA) in Stockholm had decided to establish a laboratory for advanced military studies in operations research. In connection with this they intended to purchase a new computer, and Jacob Palme, the most prominent SIMULA actor in Sweden at the time, was appointed chairman of a committee whose purpose was to draw up an evaluation report on the subject. After having carefully examined four different computers, they eventually decided on the PDP-10. Since this computer at the time had no SIMULA compiler in its software library, such an implementation was immediately ordered from the Swedish software house ENEA Data. The first test version of the compiler was available to programmers at the QZ data center in Stockholm, and via communication networks from September 1974. The first public release took place in January 1975.

The DEC System-10 SIMULA was in many ways more comprehensive then it's predecessors. It contained, among other things, online debugging facilities which allowed setting and re-setting of break points during program execution.[82] Besides, the compiler was especially designed for interactive use, and would soon set a new standard for the development of SIMULA compilers.

Apart from FOA, Digital Equipment Corp. also contributed to the project under the condition that the compiler should be distributed free of charge. This condition was accepted, with the result that the DEC System-10 compiler came to have a major impact on the dissemination of SIMULA, especially in the United States. In August 1975, eight months after it was released, the compiler had been distributed to 28 installations, 22 of which were located in the United States and Canada.[83]



A Note on NCC's SIMULA Engagement in the 1970s


In the early days of the 1960s promotion and marketing of SIMULA was mainly done by the developers themselves whenever they attended a conference, or gave introductory courses to other research scientists, either at NCC or abroad. However, as the language rapidly spread to larger groups of users, and the amounts of money invested in the project steadily grew, this situation had to be done in a more professional manner.

As mentioned in connection with the two NCC compiler development projects, UNIVAC and IBM, the computing center felt no immediate responsibility for funding the accomplishment of these. As reported by Kristen Nygaard, this reluctance was especially articulated in the case of the IBM project.[84] The general opinion was that the lifetime for a programming language like SIMULA would not exceed five years. Furthermore, if one took into consideration the costs of developing a compiler, not to mention the great commercial risks involved, NCC was naturally very reserved. Nevertheless, when NCC eventually agreed to take responsibility for the two compiler development projects, their conditions for doing this were that sufficient external financing was at bay, and that the Centre as such would not incur expenses. Based on this mutual understanding the two projects were started (UNIVAC in 1967/68 and IBM in 1969), and Nygaard began his hunt for investors. As we know, however, his efforts proved unsuccessful, and when this eventually became clear to the parties involved both projects had developed to a point beyond no return, and NCC had to carry the financial burden alone.

Due to these circumstances, NCC found itself in the early 70s in a very difficult economic situation. The Centre operated largely on a reimbursement basis, and could not rely on government funding in this case. From the management's point of view it was therefore necessary for the SIMULA activity to be self-supporting, and for the compiler investments to show profits.[85]

NCC has often been criticized for its pricing policy regarding its two SIMULA compilers. This critique has in some cases been justifiable, e.g. when Donald Knuth in 1973 was prevented from introducing SIMULA at Stanford University, partly because of NCC's unwillingness to reduce prices, and give it away free of charge to universities.[86] When discussing these matters, however, one should bear in mind the fact that NCC was neither a conventional software house, nor a fully financed governmental institution. In addition to the SIMULA operations, NCC was also committed to a number of other research activities which deserved equal attention and financial support. Nevertheless, by 1973 the use of SIMULA had spread to such an extent that NCC had lost track of it, and despite the fact that this dissemination could have gained even more momentum if NCC had lowered its prices, the language was estimated to be in regular use at more than 250 sites that year.[87]



The Association of SIMULA Users


When talking about NCC's SIMULA commitment in the 1970s, one must also mention the Centre's instrumental role in the establishment of an Association of SIMULA Users (ASU). The construction of an organizational framework which could facilitate the exchange of ideas among SIMULA users was actually an old idea first proposed by Dahl and Nygaard back in 1967. However, at that time other and more pressing needs were given priority, but in 1972/73 the idea surfaced again and in September 1973 the Association of SIMULA Users was formally founded.

Through annual conferences, workshops and newsletters the ASU came to constitute an international forum for discussion and exchange of ideas within the SIMULA community. In this capacity the organization also represented an important channel for exchange of information and ideas between the SIMULA Standards Group[88] consisting of members from the various SIMULA implementation teams, and the wider user community.[89]

At the first ASU conference in Oslo the number of founding members were 43, one year later, in August 1974, this number had increased to a total of 172, and the SIMULA community now extended to more than 23 different countries around the world.[90]


Photo 7. SIMULA Always First! Ole-Johan Dahl (left) and Kristen Nygaard, 1982. Courtesy of Rune Myhre, Dagbladet.


Epilogue: Power to the People


Before concluding this chapter I want to dwell a bit on one interesting aspect of the SIMULA project that clearly shows how scientific and technological activity is just as loaded with political interests as any other human enterprise.[91] During his work with operations research in the 1950s, Kristen Nygaard had become increasingly aware of what he saw as the dangers of technocracy.[92] He was concerned that modern technology would become the means by which a small, technically-informed elite could extend its power over the large masses which did not have access to the same knowledge base. To illustrate how Nygaard's views on technocracy influenced the development of SIMULA, I want to reproduce a portion of a speech he made at the Lysebu Conference on Simulation Programming Languages in May of 1967. His concern surfaced in a dispute with Jan Garwick, the author of the general-purpose language GPL, over the implications of technocracy in the programming community.

It is a common belief here that this Conference consists of people belonging to the 1% group--this is not true, since I am a representative of the 99% group and I think since we are so many and we are going to use these tools, we should have the right to say something here. We are simple-minded men but we have complex problems and we are forced to face these complex problems. [...] When Garwick talked about his language, he said this was a super language which solved all problems. Of course, even if it looked a little frightening still I was relieved. But then--what happened? He said that this is just for the 1% group--but for the 99% we are going to provide a number of different languages which are defined in the general language so, therefore, we are forced to learn all these languages instead. This is not what we want. What we want is to be given concepts so that we can handle complex problems in a manner which we are able to grasp. [93]

Nygaard's noble defense for the layman is charming perhaps, but it reveals a deep concern about the power/knowledge relationship between the suppliers and the users of technology. He strongly opposed Garwick's idea about 1 percent high priests as suppliers of technology and called for a universal language that was simple and easy enough for ordinary programmers to learn and use efficiently.[94] There is little doubt that he wanted SIMULA 67 to be precisely that language. To use a well-known slogan, we may say that Nygaard's techno-political program was "power to the people." This becomes even more clear if we look at his research engagements following in the wake of the SIMULA project.

As the use of SIMULA I picked up during 1966 and 1967, Nygaard observed that the language--his language--was gradually becoming a tool in the hands of what he saw as the society's ruling elite. He says:

I could see that SIMULA was being used to organize work for people and I could see that it would contribute to major changes in this area: More routine work, less demand for knowledge and a skilled labor force, less flexibility at the work place, more pressure. I could see this because I was involved in many of the projects where SIMULA was being used. Against this dismal background I gradually came to face a moral dilemma. I won't say that it was as dramatic and heroic as the one the nuclear physicists experienced over the atomic bomb, but it was analogous. I realized that the technology I had helped to develop had serious consequences for other people, especially the people that I had come to identify with politically. The question was what to do about it? I had no desire to un-invent SIMULA [...] because I was convinced that in the society I wanted to help build, computers would come to play an immensely important role.[95] [My translation]

Kristen Nygaard took his experiences, his knowledge and technical expertise to the labor movement. He wanted to warn them about "what was coming their way,"[96] so to speak, and he wanted to educate them and help them build up a knowledge base about the new computer technology. His contacts and cooperation with the Norwegian labor movement in the late 1960s lead to a big research project[97] where Nygaard and his researchers at NCC collaborated with members of the labor movement to build up this knowledge base. This project was a pioneer effort on a worldwide scale and, as the first individual outside North-America, Kristen Nygaard was distinguished for his efforts by the American organization, Computer Professionals for Social Responsibility.[98] This, however, is a different story that will have to remain beyond the scope of this study.





This chapter has been an attempt to display and discuss how the SIMULA programming language came into existence. Employing a contextual or socio-technical perspective on history, the basic aim has been to explore the heterogeneity of technological genesis and change as demonstrated in the case of the development of a programming language.

When reading traditional internalist accounts in the history of technology, one often gets the mistaken impression that technologies, as it were, evolve in a technical or scientific vacuum. This flawed notion of the nature of technological change stems, as many writers have repeatedly criticized,[99] to a large extent from the absence of a wider context to which one can relate the technical narrative.

As this chapter has aimed to show, the construction of SIMULA was by no means a self-contained technical and scientific enterprise, and the outcome of Dahl and Nygaard's efforts was largely dependent on what is usually considered external or contextual premises. As examples one can but mention the UNIVAC 1107 which significantly improved the environment for the development of SIMULA, and the Department for Special Projects which in many ways came to constitute an ambiance of major importance for software engineering at NCC.

Another, but nonetheless significant aspect of the problem addressed above is the parthenogenic myth that technologies, like Athena from Zeus' head, spring to life fully-grown in a sudden flash of insight by genius minds like Charles Babbage, Alan Turing or John von Neumann. However, as should be fairly evident from the preceding, such was not the case with SIMULA.

From a simple simulation procedure package associated with ALGOL 60, the language was painstakingly constructed, shaped, and transformed, via SIMULA I, into the SIMULA 67 high level programming language we know today. This genesis involved, as has been stressed, a high degree of heterogeneous engineering on the part of Dahl and Nygaard. Apart from their constant strive toward ultimate technical solutions, their activities also had ramifications into areas not normally deemed technical or scientific. Kristen Nygaard's entrepreneurial role in connection with the Univac/SIMULA deal, and Ole-Johan Dahl's persistent work on language design and implementation as well as his instrumental role within IFIP TC-2 are representative examples of the kind of heterogeneous engineering I have been trying to illuminate in this chapter.




[1] This chapter is revised from an article published in the Annals of the History of Computing. Vol. 16(4), 1994; pp. 25-37. I gratefully acknowledge the many helpful comments and suggestions on earlier drafts offered by among others William Aspray, Martin Campbell-Kelly, Paul Ceruzzi, Michael S. Mahoney, Arthur L. Norberg, Nils Roll-Hansen, Knut H. Sørensen, and the referees of the Annals of the History of Computing.

[2] See for instance: Hughes (1983) and Hughes (1989).

[3] See Hughes (1986) and Latour (1987).

[4] "A Status Report on SIMULA - A Language for the Description of Discrete Event Networks". 13 July, 1963. NCC

[5] Nygaard K. and Dahl O.J: "The Development of the SIMULA Languages", Wexelblatt (ed.), Op.cit., p. 441.

[6] Nygaard (1963, p. 520).

[7] Nygaard K. and Dahl O.J: "The Development of the SIMULA Languages", Wexelblatt (ed.), Op.cit.

[8] ALGOL 60 represents a milestone in the history of programming languages, and during the 60s and 70s this language was the prime source of most theoretical work related to compiler design and development.

[9] Interview with Ole Johan Dahl, 7 November, 1991.

[10] NTNF's Annual Report 1958/59, p.82.

[11] "Den fremtidige virksomhet ved Norsk Regnesentral", 3 May 1961. NCC.

[12] The preceding account is primarily based on interviews with Kristen Nygaard 28 November, 1992, Karl Holberg 5 March, 1992, and Finn Lied 6 March, 1992.

[13] NCC's Financial Accounts 1959, 1960.

[14] "Den fremtidige virksomhet ved Norsk Regnesentral", 3 May, 1961. NCC.

[15] Interview with Kristen Nygaard, 28 November, 1991.

[16] "Forslag om anskaffelse av en elektronisk regnemaskin type UNIVAC-1107 til Norsk Regnesentral", innstilling fra rådets arbeidsutvalg. Fall 1962. NTNF. Please note that all US $figures in this chapter are based on US-Norwegian exchange rates listed in Historical Statistics 1978, p. 513.

[17] Note from NTNF's director Robert Major. 19 July, 1962. NTNF.

[18] Nygaard K. and Dahl O.J: "The Development of the SIMULA Languages", Wexelblatt (ed.), Op.cit., p. 442.

[19] This project was based on a new and promising algorithm for linear programming, denoted parametric decent, developed by Sverre Spurkland at NCC. Even though the project was based on a very powerful concept, and later on was to receive substantial financial support from Univac, it was never completed.

[20] Letter from Robert W. Bemer to the author. 15 July, 1994.

[21] Telephone interview with Robert W. Bemer, 14 April, 1992.

[22] Nygaard (1963).

[23] Nygaard K. and Dahl O.J: "The Development of the SIMULA Languages", Wexelblatt (ed.), Op.cit., p. 455.

[24] Ibid., p. 454.

[25] Donald MacKenzie: "The Influence of the Los Alamos and Livermore National Laboratories on the Development of Supercomputing" Annals of the History of Computing, Vol.13(2), 1991.

[26] Interview with Kristen Nygaard, 28 November, 1991

[27] Sperry Rand Univac's offer to NCC regarding UNIVAC 1107, 26 June, 1962, and "Agreement made 1st. day of June by and between Sperry Rand Corporation (Univac) and the Royal Norwegian Council for scientific and industrial research". 1 June, 1963. NTNF.

[28] Telephone interview with Robert Bemer, 14 April, 1992, and letter from Robert Bemer to the author, 29 July, 1992.

[29] Letter from A. A. Cohen, Staff Scientist of the Data Processing Division to Kristen Nygaard. 23 October, 1964. NCC.

[30] Rådet for elektronisk databehanding i staten. My translation.

[31] Memo from Finn Lied to Karl Holberg. 11 May 1962. NDRE

[32] His conclusion was largely drawn from a survey of computing needs in the Oslo area. In this survey Nygaard contacted a number of institutions that had previously benefited from his OR services and asked how they would make use of an eventual mainframe computer in the Oslo area. These were Aftenposten, Det Norske Veritas, Direktoratet for Statens Skoger, H. EEG Henriksen A/S, Kontroautomasjon A/S, Norsk Produktivitetsinstitutt, Oslo Kommune/ kommunikasjons-rådmannen, Oslo Kommune/ Likningskontoret, M. Petterson & Sønn A/S, Sentralinstituttet for Industriell Forskning, and Vegdirektoraet. Source: "Forslag om anskaffelse av en stor elektronisk regnemaskin til Norsk Regnesentral". September 1962. NTNF.

[33] "Forslag om anskaffelse av en elektronisk regnemaskin type UNIVAC-1107 til Norsk Regnesentral", innstilling fra rådets arbeidsutvalg. Fall 1962. NTNF.

[34] Lied referred to a meeting with Secretary of State Gudmumd Harlem where Harlem had expressed that if the acquisition of two computers was proposed at this stage this could lead to significant delays for both. Source: Minutes from the working committee's meeting 21 August 1962. NTNF

[35] Minutes from the working committee's meeting 21 August 1962. NTNF

[36] Note from NCC's director Leif K. Olaussen: "Oversikt over forholdet mellom Norsk Regnesentral og Univac angående levering av den elektroniske regnemaskinen UNIVAC 1107 og tilhørende programmeringssystemer", 15 January, 1965, and interview with Robert Major, 29 November, 1991.

[37] Letter from NTNF's director Robert Major to NCC's director Bjørn Ørjansen, 21 July, 1962. NTNF.

[38] Note from Kristen Nygaard to the board of NCC, 22 January, 1964. NTNF.

[39] Resolution from the board of NCC: "Organisasjonsplan for Norsk Regnesentral", 11 December, 1962, and interview with Karl Holberg, 5 March, 1992. NTNF.

[40] Resolution from the board of NCC: "Organisasjonsplan for Norsk Regnesentral", 11 December, 1962, and interviews with: Bjørn Ørjansen 25 November, Sverre Spurkland 27 November, Robert Major 29 November, 1991, and Karl Holberg 5 March, 1992. NTNF.

[41] The title for this subsection is taken from Dahl, Ole-Johan and Nygaard, Kristen. "SIMULA: A Language for Programming and Description of Discrete Event Systems. Introduction and User's Manual". May 1965. NCC.

[42] It should be added, that even though Dahl and Nygaard at this stage asserted that SIMULA should be ALGOL-based, they did not rule out a later version based on FORTRAN, using the same basic concepts.

[43] Dahl O.-J. and Nygaard K: "Preliminary presentation of the SIMULA Language (as of May 18th, 1963) and some examples of network descriptions". NCC: May 1963.

[44] Nygaard K. and Dahl O.-J: "The Development of the SIMULA Languages", Wexelblatt (ed.), Op.cit., pp. 447-448, and interview with Ole-Johan Dahl 7 November, 1991.

[45] Dahl O.-J: "The SIMULA Storage Allocation Scheme". NCC Document no. 162, November 1963, and an interview with Ole-Johan Dahl, 7 November, 1991.

[46] Interviews with Ole-Johan Dahl, 7 November, 1991 and 4 March, 1992, and Kristen Nygaard, 28 November, 1991

[47] Quasi-parallel process execution implied that a main program could switch control from one process to another during a program run according to special sequencing statements. In SIMULA this sequencing was determined by the Hold statement, in addition to local reference variables in each inactive process, identifying where the control should resume operation the next time the process was activated. (Source: Dahl O.-J: "The SIMULA Data Structures", NCC Document, February/ March 1964).

[48] Letter from Ole-Johan Dahl to the author, 10 April, 1992.

[49] Dahl and Nygaard (1965, p. 2).

[50] Nygaard, Kristen. "Report on the Use of SIMULA up to December 1965." December 1965. NCC.

[51] Ibid.

[52] Nygaard K. and Dahl O.J: "The Development of the SIMULA Languages", Wexelblatt (ed.), Op.cit., pp. 459-461.

[53] Interview with Ole-Johan Dahl, 4 March, 1992.

[54] Nygaard K. and Dahl O.J: "The Development of the SIMULA Languages", Wexelblatt (ed.), Op.cit., p 459-461.

[55] International Federation for Information Processing's Technical Committee 2 was a committee especially dedicated to programming languages.

[56] Buxton (1968, pp.337-338)

[57] I use that term even if didn't exist in the 1950s and early `60s. Back then these people were mathematicians and the field they were working in was commonly referred to as applied mathematics.

[58] F. G. Duncan and A. van Wijngaarden. "Cleaning up ALGOL 60". ALGOL Bulletin, AB16.3.3, May 1964.

[59] For further reference, see: C. H. Lindsey. "A History of Algol 68." ACM/SIGPLAN Notices, Vol. 28(3), March 1993; pp. 97-132.

[60] Buxton (1968, p. 345).

[61] Dahl O.-J., and Nygaard K: "Class and subclass declarations". NCC Document, March 1967.

[62] After having designed the systems descriptions language DELTA (1973-1975), in the second half of the 1970s, Kristen Nygaard together with research scientists from the University of Århus and the University of Ålborg Denmark, embarked upon yet another language development project called BETA. The basic idea behind this project was the very same that was turned down by the Common Base Conference ten years earlier. Very roughly, one can say that the BETA project was an attempt to generalize and refine the related notion of classes, records, types and procedures into one basic construct upon which a new programming language could eventually be designed and implemented. The effort proved successful, and the BETA team came up with a new construct called Super Pattern. Based on this highly general concept, a DELTA compiler was later developed at the University of Århus. Source: Birger Møller-Pedersen: "How did SIMULA make us Think of BETA". Talk presented at: "SIMULA 1967-1992", Special Workshop at TOOLS'92, Dortmund Germany, 31 March, 1992, and interview with Kristen Nygaard: November 28, 1991.

[63] Myhrhaug Bjørn: "Proposal for string handling and input/output definition in SIMULA 67 Common Base. Preliminary presentation" January 1968. NCC publication No. 212.

[64] Nygaard K. and Dahl O.J: "The Development of the SIMULA Languages", Wexelblatt (ed.), Op.cit., p. 471

[65] Letter from Ron Kerr to the author, 17 March 1993.

[66] Interview Drude Berntsen, 6 November, 1991.

[67] NTNF's annual review 1969, p. 69

[68] The running of the UNIVAC 1107 was, in the second half of the 1960s, one of NCC's most important sources of income, and a cornerstone in the Centre's research activities. When the Research Council's decision was known this naturally gave rise to speculations concerning NCC's future, and rightfully so since there were strong reasons to believe that central forces within the Research Council wanted to shut down the entire Centre, and transfer it's operations to other NTNF institutes. In a reaction to this, NCC employees organized themselves and launched a counterattack on NTNF. The conflict reached its climax in January/ February 1970, after which NCC was reorganized and the situation returned to normal. Source: Interview with Sverre Spurkland, 27 November, 1991.

[69] The account of the development of UNIVAC SIMULA is based on an interview with Sigurd Kubosch, 5 March, 1992, correspondence with Ron Kerr 1993 and SIMULA Newsletter: Vol. 1, No. 1, May 1973

[70] Interview with Drude Berntsen, 6 November 1991, and "Draft outline for a SIMULA 67 agreement between UNIVAC and the Norwegian Computing Centre", September 1969.

[71] Nygaard K. and Dahl O.J: "The Development of the SIMULA Languages", Wexelblatt (ed.), Op.cit., p. 470.

[72] Interview with Jacob Palme, 19 August, 1992, and Jacob Palme: "Are Simulation Languages Convenient for Military Simulations?". Research Institute for National Defence, Operations Research Centre Sweden, April 1968.

[73] Nygaard K. and Dahl O.J: "The Development of the SIMULA Languages", Wexelblatt (ed.), Op.cit., p. 475.

[74] Karel Babcicky: "The Stone Age SIMULA". Talk presented at: "SIMULA 1967-1992", Special Workshop at TOOLS'92, Dortmund Germany, 31 March, 1992

[75] Nygaard K. and Dahl O.J: "The Development of the SIMULA Languages", Wexelblatt (ed.), Op.cit., p. 475.

[76] Karel Babcicky: "The Stone Age SIMULA". Talk presented at; "SIMULA 1967-1992", Special Workshop at TOOLS'92, Dortmund Germany, 31 March. 1992.

[77] "Agreement on implementation of the SIMULA 67 language between Control Data A/S Norway and the Norwegian Computing Centre". Oslo 23 May, 1967. NCC

[78] SHAPE is an abbreviation for: Supreme Headquarters Allied Powers Europe.

[79] Nygaard K. and Dahl O.J: "The Development of the SIMULA Languages", Wexelblatt (ed.), Op.cit., pp. 473 - 474.

[80] Drude Berntsen: "Welcoming Speech", in Proceedings of the I. SIMULA Users' Conference. Oslo, September 24 - 25, 1973.

[81] The following account, describing the development of the Swedish DEC-10 SIMULA compiler, is based upon an interview with Jacob Palme, 19 August 1992.

[82] SIMULA Newsletter, Vol. 2, No. 3, August 1974.

[83] DEC System-10 SIMULA Gazette, Vol. 1, No. 2, August 1975.

[84] Kristen Nygaard: "Constructing SIMULA - Cooperation and War". Talk presented at: "SIMULA 1967-1992", Special Workshop at TOOLS'92, Dortmund Germany, March 31, 1992, and interview with Kristen Nygaard: 28 November, 1991.

[85] Interview with Drude Berntsen: 6 November, 1991.

[86] Kristen Nygaard: "Constructing SIMULA - Cooperation and War". Talk presented at: "SIMULA 1967-1992", Special Workshop at TOOLS'92, Dortmund Germany, March 31, 1992, and interview with Kristen Nygaard: 28 November, 1991.

[87] Drude Berntsen: "Welcoming Speech", in Proceedings of the I. SIMULA Users' Conference. Oslo, 24-25 September 1973. Among the largest users known in 1973 we find: The Norwegian Defense Research Establishment, the Swedish Research Institute of National Defence, the Finnish State Computing Center and Broken Hill Proprietary Co., Ltd. in Australia. In addition to these major institutions, a number of European universities were also known to use the language for educational purposes.

[88] The SIMULA Standards Group was formed after the Common Base Conference in 1967. It consisted of one representative from each of the SIMULA implementation teams, plus two representatives from the Norwegian Computing Centre. An important part of their task was to guard the SIMULA 67 standard against the undesirable flourishing of dialects experienced in so many other languages. In this respect their efforts must be regarded as quite successful since the SIMULA 67 standard remained very much on track throughout the period and indeed up to the very present.

[89] When talking about the ASU it would be wrong not to mention the "Simulady" herself, Mrs. Eileen Schreiner. As secretary of the ASU from 1973 to 1989, and treasurer and Newsletter editor to the present (1993), Mrs. Schreiner has been a thread of continuity in the SIMULA community and in many respects SIMULA's staunchest champion.

[90] SIMULA Newsletter: Vol. 2, No. 3, August 1974, p. 3. As of August 1974 the following countries were represented in ASU; Australia, Austria, Belgium, Britain, Czechoslovakia, Denmark, Finland, France, Germany, Hong Kong, Hungary, Israel, Italy, New Zealand, the Netherlands, Norway, Poland, South Africa, Spain, Switzerland, and the United States. In addition to this one must also take into account the SIMULA activity in the then Soviet Union, which in many ways constituted an ambiance of its own, isolated from the organizational framework of the ASU.

[91] For interested readers I refer to Langdon Winner. "Do artifacts have politics" in Donald MacKenzie and Judy Wajcman (eds.) The Social Shaping of Technology. Milton Keynes: Open University Press, 1985.

[92] The following draws on an interview with Kristen Nygaard 28 November 1991.

[93] Buxton (1968, pp. 210-211).

[94] In spite of these good intentions, however, it is interesting to note that SIMULA never became an easy language to learn and use. Most people found it extremely difficult to adapt to the SIMULA way of thinking and Bjarne Stroustrup, author of C++ by far the most popular SIMULA-like language in the 1990s, claims that for people who were not familiar with the key concepts, SIMULA was incomprehensible. In his opinion, this also, to a large extent, explains why the language never became wide-spread in use. Source: Interview with Bjarne Stroustrup, 22 April 1993.

[95] Interview with Kristen Nygaard, 28 November 1991.

[96] Ibid.

[97] In Norwegian: Jern- og metallprosjektet.

[98] The Computer Professionals for Social Responsibility is an organization of computer professionals concentrating on certain areas of the impact of computer technology on society. The alliance dates back to the fall of 1981 when several researchers in Palo Alto, California decided to do something about their concern regarding the close connection between computing and the nuclear arms race.

[99] John M. Staudenmaier, S. J.: Technology's Storytellers - Reweaving the Human Fabric. Cambridge, Ma: The Society for the History of Technology and MIT Press, 1985. See also Wiebe E. Bijker, Thomas Hughes and Trevor Pinch (eds.): The Social Construction of Technological Systems - New Directions in the Sociology and History of Technology. Cambridge, Ma: MIT Press, 1987.