Simula is the name of two closely related computer programming languages developed in the 1960s. The first version of the language, Simula I, was developed as an extension of ALGOL, with special tools and features added to aid the simulation of real-world events and systems.
The second version of the language, Simula 67, was developed a few years later (in 1967) and introduced a number of concepts which would later form the basis of Object Oriented Programming. This version of the language was hugely influential in the development of several other languages specifically, as well as to the whole discipline of computer programming and language design in general.
Object Orientation in Simula
Simula was designed for the purpose of simulating systems of discrete actors. This lead its inventors to create a way to encapsulate the definition of a thing, the properties of that thing, and the actions of that thing into a single computing concept which came to be called an “object.”
An object represents a specific instance of a category that defines objects of a certain type, called a “Class.” So there might be a Class called
Person, and a specific instance of a person named
There can also be sub-classes in Simula. For example, a chess program might have a class for
Piece and a sub-class for each type of piece:
A class defines the general characteristics of its members, while the object carries the relevant specific data for that particular object.
For example, the class
Queen might have methods defining how a Queen moves, while an object
Black Queen might have attributes defining its color and current position.
Designing the language this way allows (for example), a chess game to be represented in a computer program as a collection of pieces with specific abilities, positions, and histories. Another class,
Player, might then have methods to analyze the board and make game-playing decisions.
The Influence of Simula
This way of thinking about computer programming has become “normal” for most developers, but it was brand-new with Simula. Today, object-orientation is used for all sorts of systems and applications, but it was the need to simulate actual real-world objects that lead to the development of these techniques.
Work on Simula led almost directly to the Smalltalk language, which went further explicitly defining object-oriented concepts. C++, perhaps the most important language for systems programming, was inspired by Simula.
Moreover, the majority of computer programming languages today are object-oriented, and object-oriented programming is the primary coding paradigm used by software developers. Conceptually, Simula influenced all of these languages. Also, many of the most popular languages today were not directly inspired by Simula, but were inspired or built on top of other languages that were. Ruby and PHP, for example, were both inspired by C++.
- Simula Language Overview — A detailed introduction to Object Oriented Programming in Simula, along with a lot of historical information about the language and its development.
- Simula Language Reference — Links to language documentation.
- Simula Procedures — Procedures are functions attached to classes, what other languages usually call “methods.”
- The Birth of Simula — A thorough history of the language’s early development and impact on other languages.
- Online Simula Compilerator — Compiles and runs Simula code in-browser.
- Simula Reference — Detail history of the language, with lots of useful links.
- Simula Syntax Graphs.
- Simula Begin — The classic textbook on Simula, written in 1979
- DEMOS A System for Discrete Event Modelling on Simula
- Introduction to Simula 67
- Object-Oriented Programming With Simula
- Introduction to Programming With Simula
- Simulation in Strongly Typed Languages: Ada, Pascal, Simula…
- Is Simula object oriented?
- Mostly. Simula 67 (the language most people mean when they say “Simula”) introduced a number of concepts which became the basis for Object Oriented Programming (OOP). However, theory and practice in the OOP field have developed a great deal since 1967, and Simula does not conform to all of the characteristics usually considered indispensable for a fully Object Oriented language.
- What is Simula for?
- Simula was invented for the purpose of creating computer simulations. That is what led to the development of Object Orientation — discreet things that needed to be simulated within a system became the first “objects.”
- What is the difference between Simula I and Simula 67?
- Simula I, which was originally just called “Simula,” was the first version of the language.
- Simula 67, which was released in 1967, was a major expansion. This is the version that added Object Orientation and other features that later became standard parts of modern programming languages.
- Today, anyone talking about “Simula” is almost always referring to Simula 67.
- Are people still using Simula?
- Not that much. It’s impossible to say that “no one” is using it, but support and interest for the language is certainly very low at this point. There haven’t been any new books on Simula in a long time, and most of the web resources are several years old as of this writing.
- Most of the interest in Simula has been among academics and educators.
- Why should I learn Simula?
- If your goal is to learn how to code so that you can build apps and earn a living as a developer, you probably shouldn’t. Simula is mostly important at this point as a historical language. It would be a worthwhile language to learn if you were interested in exploring the development of Object Oriented programming paradigms.
- Also, like all older languages, there are some legacy Simula programs out in the wild, still being used. If you are called on to work with one of these programs (or to replace it with a modern system), you’ll need to learn the language.