Simula
Simula
Simula invented object-oriented programming almost by accident — as a side-effect of trying to describe things that happen. Kristen Nygaard had been writing simulation programs since 1957 at the Norwegian Computing Center and wanted a better way to describe a system's heterogeneous parts; he brought in Ole-Johan Dahl in January 1962 as the programmer, and by May 1962 SIMULA I — a specialized discrete-event language, an approximate superset of ALGOL 60 — was designed. When Nygaard showed it to Robert Bemer at UNIVAC (the same Bemer who'd built COMTRAN), Bemer — a devoted ALGOL fan — got him an IFIP slot. Dahl implemented SIMULA I on the UNIVAC 1107 by January 1965.[1]
Then came the generalization that changed everything. Simula 67 took Simula I's simulation-specific ideas and made them general-purpose: not just processes and events but classes, objects, subclasses, inheritance, virtual procedures, coroutines, and garbage collection — the entire conceptual vocabulary of modern OOP, present at once, in 1967, hidden inside what looked like a plain ALGOL compiler. The mechanisms Smalltalk would make famous — send a message to an object, inherit behavior down a class hierarchy — were all here first, a decade earlier, in Oslo.[2]
The quiet ancestor of everything
Every mainstream language with class and . — C++, Java, C#, Python, Ruby, all of them — is conceptually downstream of Simula 67: Stroustrup has acknowledged it as C++'s direct inspiration, and Gosling for Java. Yet Simula itself was mostly used for its intended purpose — simulation — and largely ignored by the industry that would reinvent its ideas repeatedly for thirty years. Dahl and Nygaard received the 2001 Turing Award jointly for it — the rare case where the field recognized the invention before it became unavoidable.[3]
Where it sits
Simula is the missing chapter in the ALGOL story: where ALGOL and ALGOL 60 defined syntax and structure, Simula added behavior — the idea that data should carry the procedures that act on it. Between ALGOL and every later experiment, it's the proof that a research language aimed at one narrow problem can accidentally invent the next thirty years of mainstream.
Check your understanding
- Who designed Simula, where, and what was it originally for?
- What are the two Simulas — and which one invented OOP?
- What OOP features did Simula 67 already have in 1967?
- What happened when Nygaard showed it to Robert Bemer?
Show answers
1 — Dahl & Nygaard, Norwegian Computing Center, Oslo — built to describe discrete-event simulation. 2 — Simula I (1962, a simulation language) and Simula 67 (1967, general-purpose) — the 67 version invented classes/objects/inheritance. 3 — classes, objects, inheritance, virtual procedures, coroutines — and garbage collection. 4 — Bemer got him an IFIP slot; UNIVAC then gave NCC a discounted 1107 to implement on.