19
Early History of Object Oriented Programming Per Kjeldaas

Early History of Object Oriented Programming Per Kjeldaas

Embed Size (px)

Citation preview

Early History of Object Oriented Programming

Per Kjeldaas

Who Was First? Not C++ Not Smalltalk Simula 67 is recognized as the first

object-oriented language (1967)

What Was the Need? Simulation needed interactive

processes Algol, Fortran and Cobol were

inadequate for modeling complexity Monte Carlo simulation was done by

hand

Marriage of Two Disciplines Kristen Nygaard was expert operations

analyst Ole-Johan Dahl was an expert

computer scientist and programmer

Simula I

Quasi-Parallel Processing Basis for today’s Java threads Co-routines Ability to yield control from inside a

process when simulated time advances Other processes will take control in the

meantime Earlier than time sharing (Multics)

Simula 67 - Objects and Classes Station and customer concepts merged

into the object concept Classes of objects are described in the

class declaration, just like what Java has adopted

Most current OO programming features come from Simula

Reference Variables and “new”

ref (Invoice) inv;

inv :- new Invoice(1511);

Again, Java has adopted it in a similar way

Subclasses and Inheritance

order class batch order;

begin integer batch size; end;

order class single order;

begin real finishing time, weight; end;

single order class plate;

begin real length, width; end;

Polymorphism Virtual functions - like methods in Java The “inner” mechanism

class Person;

begin

<statements 1>

inner;

<statements 2>

end;

Heap and Garbage Collector Algol’s stack was inadequate Object storage required heap Garbage collector was also needed Both features were in Simula 67

“Remote” Object Connection

inspect (element expression) when A1 do S1

when A2 do S2

when An do Sn

otherwise S;

Adopted by Java as:

if (x instanceOf A) { …}

Components and Packages Implemented as classes within a class In Simula 67, simulation-specific

functionality implemented in the Simulation package (class)

Real-Time Simula Was planned in 1970 To be used for modeling an operating

system Was never implemented, however

Why did it not spread? Expensive Misguided government policies Donald Knuth of Stanford U wanted it,

but did not want to pay -- did not get it! Few publications in English The Simula name

Finally Catching On Alan Kay used “bootleg” copy of Simula

67 for CDC as basis for Smalltalk Bjarne Stroustrup gave Simula credit as

the main basis for C++

Finally Catching On James Gosling of Sun referenced

Simula as Java’s basis at JavaOne Many universities used Simula as the

OO teaching language during the 80’s and 90’s

Postscript OO would have reached the world much

earlier if a number of administrative errors had not been made

Dahl and Nygaard only got their recognition, the ACM Turing award, also known as the Nobel prize of computing, in 2002

They both died a few months later

References ACM - Association for Computing Machinery, Press release: A.M. Turing Award, February 6, 2002.

Retrieved last on October 23, 2004 from http://www.acm.org/announcements/turing_2001.html Dahl, O.-J.: The Birth of Object Orientation: the Simula Languages, 2002. Retrieved last on October 23,

2004 from the University of Oslo’s web site at http://heim.ifi.uio.no/~olejohan/birth-of-oo.pdf Dahl, O.-J., B. Myhrhaug & K. Nygaard: Some Features of the Simula 67 Language, Dec. 1968,

Proceedings of the second conference on Applications of simulations, Winter Simulation Conference (ACM, IEEE), New York, NY

Dahl, O.-J., K. Nygaard: SIMULA: an ALGOL-based simulation language, Communications of the ACM, v.9 n.9, p.671-678, September, 1966

Gosling, J., A. Baratz: Opening Keynote Session at JavaOne. May 29, 1996, San Francisco, CA. Retrieved last on October 23, 2004 from. http://java.sun.com/javaone/javaone96/Gosling.Baratz.html

Holmevik, J. R.: Compiling SIMULA: A Historical Study of Technological Genesis. IEEE Annals of the History of Computing, Vol. 16, No. 4, 1994, Pages: 25-37 (Also retrieved last on October 23, 2004 from http://staff.um.edu.mt/jskl1/simula.html).

Krogdahl, S.: The birth of Simula, HiNC 1 Conference in Trondheim, Norway, June 2003 (IFIP WG 9.7, in cooperation with IFIP TC 3) (Also retrieved last on October 25, 2004 from http://heim.ifi.uio.no/~steinkr/papers/HiNC1-webversion-simula.pdf).

Nygaard, K., O.-J. Dahl: The development of the SIMULA languages. The first ACM SIGPLAN conference on History of programming languages, 1978, Los Angeles, CA. Pages: 245-272

Sklenar, J.: Introduction to OOP in SIMULA, 1997, retrieved last on October 23, 2004 from http://staff.um.edu.mt/jskl1/talk.html

Stroustrup, B.: A History of C++: 1979-1991. ACM SIGPLAN Notices, March 1993. The second ACM SIGPLAN conference on History of programming languages, 1993, Cambridge, MA. Pages: 271-297

Vaucher, Jean G.: DIRO Simula home, 2000. Retrieved last on October 23, 2004 from http://www.iro.umontreal.ca/~simula/