Generated by DeepSeek V3.2| Simula | |
|---|---|
| Name | Simula |
| Paradigm | Object-oriented programming, Procedural programming |
| Designer | Ole-Johan Dahl, Kristen Nygaard |
| Developer | Norwegian Computing Center |
| First appeared | 1962 (Simula I), 1967 (Simula 67) |
| Typing | Static typing, Strong typing |
| Influenced | Smalltalk, C++, Java (programming language), Eiffel (programming language), BETA (programming language), Ada (programming language) |
Simula. It is widely recognized as the first programming language to feature the core concepts of object-oriented programming, including classes and objects. Developed in the 1960s by Ole-Johan Dahl and Kristen Nygaard at the Norwegian Computing Center, its design was initially motivated by the need for effective discrete event simulation of complex systems. The language's revolutionary ideas on data abstraction and program structure have had a profound and lasting impact on the field of computer science.
The origins of the language are deeply rooted in the work on operational research and computer simulation conducted by Kristen Nygaard in the late 1950s. Seeking a better tool for modeling systems like job shop scheduling, Nygaard collaborated with computer scientist Ole-Johan Dahl at the Norwegian Computing Center. Their initial effort, known as Simula I, was implemented between 1962 and 1965, running on a UNIVAC 1107 mainframe. This version introduced foundational ideas but was still a simulation-specific language. Between 1966 and 1967, Dahl and Nygaard undertook a major redesign, generalizing the concepts into a universal programming language. This new version, first presented at the IFIP Working Conference on Simulation Languages in Lysebu in 1967, was formally called Simula 67. Key refinements were later solidified in the 1984 Simula Standard, published by the now-defunct Simula Standards Group.
The language extended the ALGOL 60 base with several powerful and novel constructs. It introduced the foundational concept of the class, serving as a template for creating objects that encapsulate both local data and associated procedures. For managing these objects, it featured sophisticated mechanisms for reference semantics and garbage collection (computer science). The language also provided a coroutine model through its `detach` and `resume` statements, enabling quasi-parallel execution critical for simulation. Other significant features included virtual procedures, which enabled dynamic dispatch, and a systematic approach to prefixing, allowing for class concatenation and the creation of class hierarchies.
This language pioneered the three core pillars of object-oriented programming: encapsulation, inheritance, and polymorphism. Encapsulation was achieved by bundling data and procedures into class-defined objects, protecting internal state. Inheritance was supported through class prefixing, allowing a new class to inherit all the attributes of an existing one, forming an "is-a" relationship. Polymorphism was enabled via virtual procedures, where a call to a method could execute different code depending on the actual type of the object at runtime. These concepts provided a powerful model for organizing program structure around abstract data types, fundamentally shifting software design from procedural programming to modeling systems as interacting objects.
The impact of this language on subsequent software development cannot be overstated. Its concepts directly inspired Alan Kay and the team at Xerox PARC, leading to the development of Smalltalk, which popularized the object-oriented paradigm. Bjarne Stroustrup incorporated its class concept into C with Classes, which evolved into the immensely influential C++. The language's DNA is clearly visible in later major languages like Java, C#, and Eiffel. For their groundbreaking work, Ole-Johan Dahl and Kristen Nygaard were awarded the prestigious Turing Award in 2001 and the IEEE John von Neumann Medal in 2002. The language is historically preserved and studied by institutions like the University of Oslo and the Norwegian Museum of Science and Technology.
Early implementations were tied to specific mainframes, such as the UNIVAC 1100/2200 series and IBM System/360. A significant portable implementation, known as Simula 67 Common Base, was developed in the 1970s. Notable variants include Lund Simula, developed at Lund University, and Compiled Simula, or CSimula, created at the University of Stockholm. For modern systems, implementations like GCC-based compilers and the Portable Simula Compiler have been developed. Specialized derivatives were also created, such as Delta Simula for teaching and Simula/D for system description. The language's standard runtime environment is maintained and available for platforms including Microsoft Windows, Linux, and macOS.
Category:Object-oriented programming languages Category:Programming languages created in the 1960s Category:Simulation programming languages