Things Have History
Simula 67, or how a Norwegian harbor simulation gave software its objects

software-architecture

Simula 67, or how a Norwegian harbor simulation gave software its objects

Listen · 3:41

In 1961, Kristen Nygaard spread a diagram of a Norwegian shipyard on his desk at the Norwegian Computing Center in Oslo and tried to explain it to a computer. He was building simulations of industrial systems — factory floors, communications networks, harbor traffic — for clients who needed to know where the queues built up and where the bottlenecks hid. The arithmetic was fine; the language was the problem. No existing tool could say: here is a ship, it has a type, it can arrive and wait and dock and depart. He was going to have to build the vocabulary himself.

He recruited Ole-Johan Dahl in January 1962. Dahl was one of Norway’s most precise programmers; Nygaard supplied the institutional momentum and the larger ambition. Working with a UNIVAC 1107 computer that arrived at the Center in 1963, the pair produced SIMULA I by 1965 — a simulation language built on ALGOL 60, describing systems as interacting processes. Useful, but still specialized. The bigger idea hadn’t arrived.

It came from C.A.R. Hoare’s 1965 paper on record classes, which proposed that a generic type could produce many independent instances. Nygaard and Dahl saw what that meant: you could generalize a process into a class — a template describing what a thing was and what it could do — and then instantiate it as many objects, each alive in memory, each managing its own state. One class could inherit properties from another. Methods could be overridden by subclasses. You could model an entire harbor, and every ship in it would be a self-contained computational entity.

They presented Simula 67 at the IFIP Working Conference in Oslo in May 1967. The reception was muted. A small circle of Scandinavian researchers adopted it; the rest of the world kept writing FORTRAN.

Then it reached Utah. In the fall of 1966, Alan Kay began graduate school at the University of Utah and was handed a stack of technical documents on his first day. One was a Simula manual. Kay and a fellow student unrolled a program listing eighty feet down a corridor and crawled along it together, calling out discoveries to each other. What they found was a memory allocator that didn’t follow stack discipline — objects could stay alive independently, as long as they were needed. A few months later, someone asked Kay what he was working on, and he said: it’s object-oriented programming. He had just named the paradigm.

The name spread faster than the language. Bjarne Stroustrup spent the early 1980s introducing those same ideas to C programmers, calling the result C++. Sun’s James Gosling built Java in the mid-1990s on the same foundations. Python, Ruby, C#: the inheritance is literal. Dahl and Nygaard received the ACM Turing Award in 2001, thirty-four years after the Oslo conference. Dahl died in June 2002; Nygaard two months later.

They had built a language to simulate the world. The world went on to rebuild itself in it.

Sources

Spot a mistake?

Wrong date, broken citation, a fact that doesn't hold? Tell us. It lands in an inbox a human reads and the post can be pulled or corrected.