Alan Kay Readme
Fri Jul 24 14:50:35 UTC 2009
This is an interesting example of an ever increasing web disease – that is: expressing mere opinions without foundations or checking. This one is easy, because there is a readily available "Early History of Smalltalk" that the ACM got me to write in 1993. So why wouldn’t people just type "history of smalltalk" into Google? (I don’t know and I haven’t been able to figure this out).
The very first hit finds this paper. (This one is not the best version of it because someone just scanned the doc I wrote to get an HTML version and left out lots of the pictures. But in looking at it, it seems to answer this question very straightforwardly – and that answer was given by "someone who was actually there" and had a hand in the invention of Smalltalk, rather than people with opinions from the side.)
What is wrong? Why is mere opinion so dominating discussions held on the easiest medium there has ever been that can provide substantiations with just a little curiosity and work? Is the world completely reverting to an oral culture of assertions held around an electronic campfire?
As anyone who would be willing to read a few pages of writing will be able to see, there were a number of important influences on the invention of objects and then the invention of Smalltalk itself.
Objects a. The first two influences I saw were pure mathematics and molecular biology (these were my two majors in college starting in 1958). b. The second two I saw (in the very early 60s) were procedural abstractions of date structures in the Burroughs 220 file system for the Air Force, and especially the Burroughs B5000 computer hardware. c. "In the air" in the ARPA community in 1966 was the intention to invent a new kind of distributed network with "no central control or switching". d. The next two I saw (in 1966 in the very same week) were Sketchpad and Simula. Sketchpad was the dominant metaphor, but I had to see Simula a few days later to understand just how great an idea Sketchpad was.
These seven influences got me to thinking about one abstraction that was indeed like a biological cell on the one hand and an entire computer on the other which could be universally used at all levels of scales in both software and hardware to "model anything" (including all the old inconvenient things computing was using). This is where "message passing" took hold as something stronger in concept and more loosely coupled and scalable system-wise.
Somewhat asked me what I was doing and I said "object oriented computing". (I should have thought much harder about the choice of terms)
Smalltalk a. In 1968 I saw Seymour Papert, Wally Feurzig, et al., and LOGO and got interested in the idea of a computer and computer environment for children. Right around that time I read Marvin Minsky’s incredible book "Computation: Finite and Infinite Machines" and he made a kind of Lisp from Goedel numbers that was really beautiful. This got me to look at Lisp again and finally understand what was truly great about it. In 1970 I was at the Stanford AI Project on a postdoc and I started playing around with various kinds of interpreters.
b. In 1971 at PARC we had the wonderful funding to be able to try to really make all this happen, and I started thinking about a programming language for children that would not be harder to learn than LOGO but which would be object oriented and also use Carl Hewitt’s ideas in PLANNER as a way of communicating in forms that could be used for deduction (this was somewhat like the object-oriented Prologs that were done much later).
c. In 1972, while working on all this "the bet" happened and I spent a few weeks just making the simplest possible OOP language using McCarthy’s techniques first employed for Lisp in the late 50s. This is in the Appendix of the "Early History" paper, and it is what Dan Ingalls implemented in a month to get a first running version of Smalltalk.
I most definitely still think of OOP at its best as being "biological".
Best wishes (and happy reading)