Milestones:Object-oriented programming

From IEEE Milestones Wiki

This is a temporary page. The final version of this page can be found on the Engineering and Technology History Wiki

Title

Object-Oriented Programming, 1961-1967

Citation

Ole-Johan Dahl and Kristen Nygaard created the Simula programming languages in the 1960s at the Norwegian Computer Center. They introduced a new way of modeling and simulating complex tasks. Object-oriented programming is now dominant in systems development. It is an integral part of computer science curricula, as are languages built on object-oriented programming concepts, such as Smalltalk, C++, Java, and Python.

Street address(es) and GPS coordinates of the Milestone Plaque Sites

59.9436196, 10.7183287, Gaustadalléen 23B, N-0316 Oslo, Norway. 59.943329 N, 10.717839 E

Details of the physical location of the plaque

Inside, in the ground floor entrance hall, for instance on a brick-wall.

How the intended plaque site is protected/secured

The building is open to the public during normal opening hours.

Historical significance of the work

In 1961 Ole-Johan Dahl and Kristen Nygaard started working together to develop a description language for computer simulations. The two scientists developed a simulation language called SIMULA. This resulted in several versions of the language, including SIMULA 1. After completing SIMULA 1, they developed a high-level general programming language with real-time capabilities, on top of strong simulation constructs. The resulting language was called SIMULA 67, completed in 1967.

The language introduced all elements of what today are considered essential in an object-oriented language: encapsulation, inheritance, late binding, and dynamic object creation. And hiding mechanisms were added to the language shortly after.

This gives a natural way of modeling real world problems, letting objects reflect the things of interest, including clients or service providers. An object resembles an autonomous unit in that it has capabilities and may be asked to perform services by other units. This style of organizing the code and data was later termed "object-oriented programming" (OOP).

Object orientation and object-oriented programming became popular world-wide when the ideas of SIMULA were adopted in wide-spread languages such as C++ and Java. In the 1970s in USA, Alan Kay picked up the ideas of SIMULA in his Smalltalk language. Around 1980, Bjarne Stroustrup, who was taught SIMULA by Nygaard, decided to introduce the SIMULA philosophy to the C systems developers community, thus creating the C++ object-oriented language. Another ten years later Java was developed under the auspices of SUN by James Gosling who adhered to the SIMULA object-oriented mechanisms even more closely than C++.

Object-oriented programming, originating from the work on SIMULA, is by far the most popular paradigm for computer programming today and has been so for the last 20 years. This has been acknowledged by several prestigious awards including the Turing award and the von Neumann medal.

Today, nearly all computer programmers works with or have worked with a language that supports object-oriented programming and most of the large software systems that we now run every day have been programmed this way.

Features that set this work apart from similar achievements

Object-oriented programming, originating from the work on SIMULA, is by far the most popular paradigm for computer programming today and has been so for the last 20 years.

The language incorporated fundamentally new mechanisms for programming and for program structuring, compared to existing languages. It introduced the class concept for encapsulation of data structure and code, subclasses for reuse of code, late binding for flexible inheritance, as well as dynamic and static instantiation of classes. Instead of seeing a program as a monolithic structure, the code of a SIMULA program was organized in a number of classes and blocks. Classes could be dynamically instantiated at run-time, and such an instance was called an "object". An object was an autonomous entity, with its own data and computational capabilities organized in procedures (methods), and objects could cooperate by asking another object to perform a procedure (i.e., by a remote call to a procedure of another object).

The co-routine mechanism of SIMULA allowed one to think of the objects as units that were operating concurrently. This lead to the notion of concurrent objects and inspired the combination of concurrency and object orientation.

It is widely accepted that object orientation refers to the combination of three main features: 1) encapsulation of data and code 2) inheritance and late binding 3) dynamic object generation. This combination was first made by the Simula67 language completed in 1967. Through its class construct Simula67 made a unification of the three features. Before 1967 there had been some advances in each of the three main features of object orientation. For instance, terminology involving "objects", "oriented", and "instance" first appeared at MIT in the late 1950s and early 1960s in the artificial intelligence group and in Sketchpad created by Ivan Sutherland (but specialized to graphical interaction). The ALGOL version, AED-0, also introduced a concept which prefigured what was later termed "messages", "methods", and "member functions". And Lisp had made use of dynamic (late) binding of functions. The Simula67 language was inspired by some of these works, in particular the block construct of Algol60 and the record mechanism suggested by Tony Hoare [Hoare, C. A. (Nov 1965). "Record Handling". ALGOL Bulletin (21): 39–69]."

Significant references

Definition

[1] Ole-Johan Dahl and Kristen Nygaard. “Class and subclass declarations”. Norsk Regnesentral, 1967, 17 bl. Also in: Software Pioneers. Contributions to Software Engineering. Ed. by Manfred Broy and Ernst Denert. Reprint. (File:ClassAndSubclass.pdf)

[2] Ole-Johan Dahl and Kristen Nygaard. SIMULA 67. Common base definition. Norwegian Computing Center, 1967, 31, [3] bl. (File:CommonBaseDefinition1967.pdf)

[3] Ole-Johan Dahl. “Discrete event simulation languages”. In: Programming languages. Ed. by NATO Advanced Study Institute. London: Academic Press, 1968, pp. 349–395.

[4] Ole-Johan Dahl and C.A.R. Hoare. “Hierarchical program structures”. In: Ole-Johan Dahl, C.A.R. Hoare, and Edsger W. Dijkstra. Structured programming. Academic press, 1972. Chap. 3, pp. 175–220.

Importance

[5] Bjarne Stroustrup. “A history of C++: 1979–1991”. In: History of programming languages. Ed. by Richard L. Wexelblat. ACM, 1996, pp. 699–755. (File:Stroustrup1996.pdf)

[6] ACM Turing Award. Kristen Nygaard. 2001. (File:TuringAwardNygaard.pdf)

[7] ACM Turing Award. Ole-Johan Dahl. 2001. (File:TuringAwardDahl.pdf)

[8] Bertrand Meyer. “In memory of Ole-Johan Dahl and Kristen Nygaard,” in: Journal of Object-Technology, 1.4 (2002). (File:Meyer2002.pdf)

[9] Jonathan Aldrich. The Power of Interoperability. Why Objects Are Inevitable. 2013. (File:Aldrich2013.pdf)

[10] IEEE Awards. IEEE John von Neumann Medal Recipients. (File:IEEEaward.pdf)

History

[11] Kristen Nygaard and Ole-Johan Dahl. “The development of the SIMULA languages”. In: History of programming languages. Ed. by Richard L. Wexelblat. ACM, 1978, pp. 439–480. (File:DahlNygaard1978.pdf)

[12] Laszlo Böszörmenyi and Stefan Podlipnig. People behind informatics. Institute of Information Technology, University of Klagenfurt, 2003. URL: [1]

[13] Ole-Johan Dahl. “The birth of object-orientation. The Simula languages”. 2001. Also in: From object-orientation to formal methods. Essays in memory of Ole-Johan Dahl. Ed. by Olaf Owe, Stein Krogdahl, and Tom Lyche. Springer, 2004, pp. 15–25 ISBN : 3-540-21366-x. (File:Dahl2001.pdf)

Supporting materials

Citation for IEEE von Neumann award, 2002: "When Ole-Johan Dahl and Kristen Nygaard created the Simula languages in the 1960s at the Norwegian Computing Center, they introduced a new way of modeling and programming complex tasks. Object-oriented programming is now dominant in system development, and is everywhere part of the computer science curricula, as are languages built on OOP concepts, such as Smalltalk, C++, Eiffel and Java.

Kristen Nygaard analyzed complex problems by computer simulation, requiring interaction between many very dissimilar components. He saw the need for a description language that could be used to comprehend, describe and communicate complex systems, and also make it possible for computers to execute models of what had been described.

Ole-Johan Dahl joined Kristen Nygaard at the NCC. They designed the Simula concepts and language together, and Dahl carried out the difficult task of writing the program that translated descriptions into computer instructions. In 1968 Dahl became the University of Oslo’s first computer science professor and built its Informatics Department. Later he has contributed to the theory of proving correctness of programs. Nygaard continued OOP, but also became the driving force in the “Scandinavian school of system development.” His efforts now are aimed at improving the teaching and conceptual platform for computer science. Dahl and Nygaard are Professors Emeriti at the University of Oslo. They both have been named Commander of the Order of Saint Olav by the King of Norway and Honorary Fellows of the Object Management Group, have received the Norwegian Rosing Prize and the 2001 ACM A.M. Turing Award."

Citation for ACM Turing award, 2002: "... for ideas fundamental to the emergence of object oriented programming, through their design of the programming languages Simula I and Simula 67."