# Ole-Johan Dahl

> 1931–2002 · Computer Scientist, Co-creator of Simula
>
> **Recorded contribution:** Co-created Simula, introducing class, object, inheritance, and virtual-method mechanisms later foundational to object-oriented programming

## How to use this dossier

Read for a causal chain, not a hero story: inherited problem → contribution → mechanism → downstream capability → limit. Then close the page and complete the reconstruction exercise from memory.

## 1. Historical orientation

Ole-Johan Dahl (1931–2002) was a Norwegian computer scientist who worked with Kristen Nygaard to design and implement Simula. Nygaard brought simulation and system-modeling problems; Dahl supplied exceptional language, compiler, and formal reasoning expertise. Simula 67's classes, objects, inheritance, and virtual procedures arose from representing many interacting simulated processes with their own state and lifetime. Dahl later contributed to structured programming and methods for reasoning about class-based programs. Simula is widely called the first object-oriented language, but the category was named and reshaped later, especially by Smalltalk; the precise historical claim is that Simula introduced the class/object mechanisms that directly influenced later OOP.

## 2. The problem inherited

Discrete-event simulations needed reusable process descriptions whose many instances retained separate state, and those abstractions had to compile efficiently on limited machines.

## 3. The central contribution

Dahl co-designed Simula's operational class and object semantics and helped show how such programs could be implemented and reasoned about systematically.

## 4. Reconstruct the mechanism

1. Compile a class declaration into a data layout and procedure environment shared by its instances.
2. Allocate each object with its own attributes and a reference connecting method calls to the appropriate class behavior.
3. Extend a class by prefixing it with inherited state and procedures while allowing virtual operations to be overridden.
4. Coordinate quasi-parallel simulation processes by suspending and resuming object activations along a simulated timeline.

## 5. What changed downstream

- Simula's mechanisms became direct ancestors of C++, Java, C#, and many modeling languages.
- Dahl's implementation work demonstrated that high-level object abstractions could be compiled.
- His later formal methods linked data abstraction with rigorous program reasoning.

## 6. Attribution, limits, and uncertainty

- Dahl and Nygaard are inseparable co-creators supported by Norwegian Computing Center colleagues.
- The 'first OOP' label is retrospective and should not erase earlier records, modules, or later message-passing conceptions.
- Class inheritance can entangle representation and behavior; composition or functional designs can be clearer.

## 7. Reconstruction lab

Sketch an object layout and method table for Vehicle and subclass Bus, including one overridden virtual procedure. Trace allocation and dispatch for two instances, then redesign the same variation with composition and compare coupling.

## 8. Evidence trail

- [The Development of the SIMULA Languages](https://doi.org/10.1145/800025.1198392) — ACM SIGPLAN
- [Ole-Johan Dahl and Kristen Nygaard](https://amturing.acm.org/award_winners/nygaard_5916220.cfm) — Association for Computing Machinery

---

*Research checked 2026-08-09. Dates, roles, and claims about living people are historical snapshots. Linked sources remain the authority; this dossier is original instructional synthesis.*
