Simula
Simula is a programming language developed in Norway in the 1960s that is widely credited as the first object-oriented programming language, introducing classes, objects, inheritance, and virtual methods.
Definition
Simula is a programming language developed in Norway in the 1960s that is widely credited as the first object-oriented programming language, introducing classes, objects, inheritance, and virtual methods.
Overview
Simula was developed by Ole-Johan Dahl and Kristen Nygaard at the Norwegian Computing Center, evolving from an earlier language called Simula I (1962), designed for discrete-event simulation, into the more general-purpose Simula 67 (released in 1967, following an ALGOL 60 base). The original motivation was practical: Dahl and Nygaard needed a better way to model and simulate complex systems made of interacting entities — such as ships moving through a harbor system — and found that existing simulation techniques required awkward, error-prone bookkeeping of each entity's state and behavior. Their solution was to bundle data and the procedures that operate on it into a single unit, the 'class,' from which individual 'objects' (instances) could be created — the foundational idea now recognized as object-oriented programming. Simula 67 introduced, in essentially their modern form, the core concepts that define OOP: classes as templates combining state and behavior, objects as instances of classes, inheritance allowing a class to extend and specialize another (called 'subclasses' in Simula), and virtual procedures enabling dynamic dispatch — where the specific method invoked is determined by an object's actual runtime type rather than its declared static type. It also introduced coroutines as a language feature, letting simulation processes cooperatively yield control to one another, an idea that predates and directly influenced later concurrency and generator constructs in many other languages. Dahl and Nygaard received the ACM Turing Award in 2001 largely in recognition of Simula's foundational contribution to programming language design. Simula directly influenced Alan Kay's design of Smalltalk (Kay has explicitly credited Simula's class mechanism as a key inspiration), and through Smalltalk and independently, its ideas propagated into virtually every subsequent object-oriented language, most directly C++, whose creator Bjarne Stroustrup began his work as an attempt to combine Simula's class-based modeling capabilities with C's efficiency. Simula itself saw limited use outside Scandinavian academic and simulation circles, but its conceptual legacy is arguably unmatched by any other single language in the history of software.
Key Features
- First language to introduce classes and objects as combined data-and-behavior units
- Introduced inheritance, allowing classes ('subclasses') to extend and specialize other classes
- Virtual procedures providing dynamic dispatch based on an object's runtime type
- Coroutines as a first-class language feature for cooperative process scheduling
- Originated as a discrete-event simulation language, built on an ALGOL 60 base
- Directly inspired Alan Kay's design of Smalltalk and, through it, most modern OOP languages
- Designers Ole-Johan Dahl and Kristen Nygaard received the ACM Turing Award in 2001