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/