190 likes | 349 Views
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
E N D
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
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; begininteger 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/