[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.
http://www.ifi.uio.no/~kristen/FORSKNINGSDOK_MAPPE/F_OO_start.html
http://userpages.umbc.edu/~schmitt/331S96/wmchal1/testdraft.html#SECTION00030000000000000000
http://jeffsutherland.com/papers/Rans/OOlanguages.pdf
http://www.cs.utk.edu/~bvz/cs302/notes/oo-intro.html
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