Norwegian Inventions Codexery

Simula

First object-oriented programming language, developed in Norway in the 1960s.

Simula

Simula refers to two programming languages for simulation—Simula I and Simula 67—built in the 1960s at the Norwegian Computing Center in Oslo by Ole-Johan Dahl and Kristen Nygaard. Its syntax is roughly a superset of ALGOL 60, and it was also shaped by SIMSCRIPT. Simula 67 brought in objects, classes, inheritance, subclasses, virtual procedures, coroutines, discrete event simulation, and garbage collection. Later Simula derivatives added other forms of subtyping beyond subclass inheritance. The language is widely seen as the first object-oriented programming language. The original 1962 version, Simula I, focused on simulations, while Simula 67 was intended as a general-purpose language and laid the groundwork for many object-oriented features in use today.

Simula has been applied to simulating VLSI designs, process modeling, communication protocols, algorithms, typesetting, computer graphics, and education. Bjarne Stroustrup (creator of C++) and James Gosling (creator of Java) have credited Simula as a major influence. Simula-style objects have been reimplemented in C++, Object Pascal, Java, C#, and many other languages.

Kristen Nygaard began writing computer simulation programs in 1957, recognizing a need to better describe system heterogeneity and operation. To develop his ideas into a language, he required more programming expertise, and Ole-Johan Dahl joined him in January 1962. Soon after, they decided to tie the language to ALGOL 60. By May 1962, the core concepts for a simulation language were set, yielding Simula I, a specialized language for discrete event simulation. Nygaard visited the Eckert–Mauchly Computer Corporation in late May 1962 to discuss the UNIVAC 1107, where he presented Simula to Robert Bemer, director of systems programming at Univac. Bemer, an ALGOL enthusiast, found the project compelling and invited Nygaard to present at an IFIP conference, where Nygaard delivered the paper "SIMULA – An Extension of ALGOL to the Description of Discrete-Event Networks."

The Norwegian Computing Center acquired a UNIVAC 1107 in August 1963 at a steep discount, and Dahl implemented Simula I under contract with Univac, building on the UNIVAC ALGOL 60 compiler. Simula I was fully operational on the UNIVAC 1107 by January 1965.

Quick Facts

Paradigms
Multi-paradigm: procedural, imperative, structured, object-oriented
Family
ALGOL
Designer
Ole-Johan Dahl
Developer
Kristen Nygaard
Latest Release Version
Simula 67, Simula I
Typing
Static, nominative
Scope
Lexical
Programming Language
ALGOL 60 (mostly) / SIMSCRIPT (some parts)
Influenced By
ALGOL 60, SIMSCRIPT
Influenced
BETA, CLU, Eiffel, Emerald, Pascal, Smalltalk, C++, and many other object-oriented programming languages
Operating System
Unix-like, Windows, z/OS, TOPS-10, MVS

Facts from the source article.

Lore & Background

Kristen Nygaard started writing computer simulation programs in 1957 and saw a need for a better way to describe system heterogeneity and operation. Ole-Johan Dahl joined him in January 1962, and shortly after they linked the language to ALGOL 60. By May 1962, the main concepts for a simulation language were established, creating SIMULA I, a specialized language for simulating discrete event systems. Nygaard presented Simula to Robert Bemer at Univac in late May 1962, and later presented a paper at an IFIP conference. The Norwegian Computing Center received a UNIVAC 1107 in August 1963, on which Dahl implemented SIMULA I, fully operational by January 1965. Simula spread to several countries and was implemented on other computers including the Burroughs B5500 and the Russian Ural-16.

In 1966, C. A. R. Hoare introduced the concept of record class construct, which Dahl and Nygaard extended with prefixing and other features. They presented their paper on class and subclass declarations at the IFIP Working Conference in Oslo in May 1967, which became the first formal definition of Simula 67. A standardization conference was held in June 1967, and Simula 67 was formally standardized by the Simula Standards Group in February 1968. Dahl proposed unifying the type and class concept, but the proposal was rejected. Simula influenced the development of Smalltalk and later object-oriented languages, and helped inspire the actor model of concurrent computation, though it only supports coroutines, not true concurrency.

Reader's Guide

Simula's significance lies in its introduction of fundamental object-oriented concepts—objects, classes, inheritance, subclasses, virtual procedures, and coroutines—that became the foundation of modern programming languages. It is considered the first object-oriented programming language, and its influence is acknowledged by creators of major languages: Bjarne Stroustrup (C++) and James Gosling (Java) have cited Simula as a major influence. Simula-type objects are reimplemented in C++, Object Pascal, Java, C#, and many other languages. Simula was used in a wide range of applications including VLSI design, process modeling, communication protocols, algorithms, typesetting, computer graphics, and education. In November 2001, Dahl and Nygaard received the IEEE John von Neumann Medal, and in April 2002 they received the ACM Turing Award for ideas fundamental to object-oriented programming. The Simula Research Laboratory is named after the language, and the University of Oslo's computer science building is named Ole Johan Dahl's House, with the main auditorium named Simula.

Did You Know?

More in Norwegian inventions 1-24

Spotted an error? Know more?

Reader corrections go straight into our review queue. Suggest an edit · How this site is sourced

Comments

Loading…
Open in the interactive codex →