[self-interest] An OO history

First Speaker Schol-R-LEA;2 scholr at slip.net
Mon Apr 2 22:49:07 UTC 2001

I can offer a few links that I found with a quick web search; you can 
probably find more with some effort.





I haven't seen them myself, so I can't vouch for their accuracy.

My own understanding is something like this. The modern object paradigm has 
its roots in the mid-sixties with a language called Simula. Simula was an 
extension of Algol 60 and was meant for simulating real-world events (as 
the name implies). One of the developers, Nygaard I think, recognized that 
they needed to be able to create data structures that not only had the same 
form, but also the same behavior; thus he created the class construct, 
which defined both a data structure and the basic functions which worked on 
it. I don't know if the class data was 'private' in the modern sense, but 
the idea of combining form and behavior was definitely the key principle.

At some point, Alan Kay learned about this, and picked up on the idea. He 
was working on a Logo derivative called FLEX (no relation to the modern 
lexical analyzer of that name) and was now looking for a way to incorporate 
it into the plan he had that would one day be called the Dynabook. The 
Dynabook was meant to be a notebook-sized computer with a B/W bit-mapped 
graphic display and touch-screen input (I don't know whether he had adopted 
the mouse yet, but apparently he had been at Engelbart's 1968 demonstration 
and knew of it at the time). He began working on the 'interrim Dynabook' 
(which became the ALTO workstation) around 1970 at Xerox's Palo Alto 
Research Center (PARC).

Since the hardware was only in the speculative stage, he began working on 
the software, especially the environment and the language. His goal was to 
develop a system that could be taught to anyone, in a short time, and yet 
still give the user total control over the system. He combined the class 
concept with the streamlined syntax of Logo/FLEX, leading eventually to the 
language now called Smalltalk-72. He was particularly enamored with the way 
it simplified the handling of windows and mice (which had been adopted by 
then), as well as both pen (AKA turtle) graphics and bit-mapped graphics. 
The Smalltalk system eventually became the major development platform at 
PARC, and through various refinements became Smalltalk-76.

By the end of the 1970s, however, PARC was getting shut down for the first 
time, and the one attempt that Xerox made to commercialize the system (the 
Star workstation) was a costly failure. Several former Xerox researchers 
formed a new company, ParcPlace (I think it had a different name 
originally, but I can't recall), and developed a final outgrowth of the 
PARC Smalltalk, which the long-standard Smalltalk-80. IIRC, the major 
watershed with ST-80 was that was the first to take the OO paradigm to the 
logical conclusion of "everything is an object", including the underlying 
bytecode and the interpeter itself.

Around this same time, OO concepts started spreading elsewhere, most 
notably into the LISP community. Several LISP programmers began working out 
methods for implementing objects in LISP, some by extending the language 
and others by using closures to create static object environments. The 
concepts of slots and prototype-based OO came out of this work.

A few years later (1983) an AT&T developer, Soustrup, revisited the older 
Simula material (it is not sure how much he knew about Smalltalk or Object 
LISP). He experimented with adding Simula-like classes to C, which 
eventually became the language called C++.

It is on this period, with three different yet related streams of 
development, that many of the modern OO concepts were worked out. It is 
also around this time (1986?) that Self was designed at Sun Microsystems. 
It took the concepts of slots and prototypes and applied them to a 
Smalltalk-like syntax and environment.

Despite all of this, OO remained controversial, and it was only with the 
rise of windowing environments that OO gained real ascendance. Under most 
other paradigms, GUIs present enormous problems for the programmer; modern 
OO languages, which were partly developed with GUIs in mind, were a natural 
fit to these systems.

This is, again, my own understanding; if anyone has any corrections for me, 
please feel free to add them. I don;t pretend to be an authority, and you 
would do well to read the other links I gave above to get more compete 
and/or accurate viewpoints.

Schol-R-LEA;2 ELF JAM LCF BiWM MGT GS (http://www.slip.net/~scholr/)
First Speaker, Last Eristic Church of Finagle and Holy Bisexuality
i with the soul of a hamlet      ** The only God you need is the one
doomed always to wallow in farce ** that looks out of your mirror

More information about the Self-interest mailing list