[FoRK] [fonc] Terminology: "Object Oriented" vs "Message Oriented"
eugen at leitl.org
Wed Feb 13 08:36:16 PST 2013
----- Forwarded message from Alan Kay <alan.nemo at yahoo.com> -----
From: Alan Kay <alan.nemo at yahoo.com>
Date: Tue, 12 Feb 2013 14:04:10 -0800 (PST)
To: Fundamentals of New Computing <fonc at vpri.org>
Subject: Re: [fonc] Terminology: "Object Oriented" vs "Message Oriented"
Reply-To: Alan Kay <alan.nemo at yahoo.com>,
Fundamentals of New Computing <fonc at vpri.org>
I wouldn't characterize it that way.
Much of today's way of doing "object-oriented" programming with regard to simulating data-structures is due to C++ and Bjarn Stroustrup's explicit intent to "do to C, what Simula did to Algol". He says clearly in the first C++ documentation that he is going to follow Simula by making a preprocessor for C, and not try to do a late-bound integrated system like Smalltalk.
The idea of simulating data structures using procedures goes way back -- the B5000 had it in hardware! -- and I think it was a multiple invention to see this as useful in objects. My first investigation (also recounted in TEHOS) was to "fix" one thing the B5000 couldn't quite do, which was to simulate a "sparse array" efficiently using objects.
When Simula 67 later appeared, one of their examples was Class String.
My way of thinking about it was much more influenced by Sketchpad and Biology. Objects should be like active entities -- Dan Ingalls later characterized the feeling of OO programming as being more like training intelligent entities than as a puppet master having to pull all the wires directly. So my thought was that sending a message should be requesting a goal to be carried out, etc.
What seemed to be really nice -- and still does -- was the simulation idea. This meant that you could make one OO system and that you could simulate all the components. What if you didn't know how to make a particular smart object "the right way"? No problem, you could write a kluge for now, stick it inside the object to hide it, and make it look the way it should on the outside. What if you couldn't think of anything better than a data structure for a classic algorithm? No problem, you could simulate the data structure.
>From my bio background, this seemed really nice. You want to do things in terms of cells and tissues, but you might have to resort to lesser organizations of atoms to make them. The idea in the OOP languages we did was that you should really take advantage of the simulation possibilities to design as strongly as possible, and then you had a universal material that could allow every qualitative level of structure and process to be done.
So this would again be very "actor-like" -- and I thought "actors" were just a great name for this way of doing things.
My own personal thoughts about what was accomplished are completely intertwined with what our entire group was able to do in a few years at PARC. I would give us credit for a very high level combination of "computer science" and "software engineering" and "human centered design" and "commingled software and hardware", etc. The accomplishment was the group's accomplishment. And this whole (to me at least) was a lot more interesting than just a language idea.
I hasten to redirect personal praise to the group accomplishment whenever it happens.
I think this is also true for the larger ARPA-PARC community, and why it was able to accomplish so much at so many levels.
The "awards to individuals" structure beloved of other fields and of journalists completely misses the nature of this process. Any recognition should be like "World Series" rings -- everybody gets one, and that's it.
> From: Miles Fidelman <mfidelman at meetinghouse.net>
>To: Fundamentals of New Computing <fonc at vpri.org>
>Sent: Tuesday, February 12, 2013 1:09 PM
>Subject: Re: [fonc] Terminology: "Object Oriented" vs "Message Oriented"
>Is it fair to say that the path you took with Smalltalk led to today's object model of data structures, associated methods, and inheritance, with either a single thread-of-control, or small numbers of threads; while the Actor model led (perhaps not directly) to massive concurrency and Erlang? (I'm still waiting for something that looks like Smalltalk meets Erlang.)
>Alan Kay wrote:
>> Hi Miles
>> (Again "The Early History of Smalltalk" has some of this history ...)
>> It is unfair to Carl Hewitt to say that "Actors were his reaction to Smalltalk-72" (because he had been thinking early thoughts from other influences). And I had been doing a lot of thinking about the import of his "Planner" language.
>> But that is the simplest way of stating the facts and the ordering.
>> ST-72 and the early Actors follow on were very similar. The Smalltalk that didn't get made, "-71", was a kind of merge of the object idea, Logo, and Carl's Planner system (which predated Prolog and was in many respects more powerful). Planner used "pattern-directed invocation" and I thought you could both receive messages with it if it were made the interface of an object, and also use it for deduction. Smalltalk-72 was a bit of an accident....
>> The divergence later was that we got a bit dirtier as we made a real system that you could program a real system in. Actors got cleaner as they looked at many interesting theoretical possibilities for distributed computing etc. My notion of "object oriented" would now seem to be very actor-like.
>> *From:* Miles Fidelman <mfidelman at meetinghouse.net>
>> *To:* Fundamentals of New Computing <fonc at vpri.org>
>> *Sent:* Tuesday, February 12, 2013 11:05 AM
>> *Subject:* Re: [fonc] Terminology: "Object Oriented" vs "Message
>> Alan Kay wrote:
>> > A little more history ...
>> > The first Smalltalk (-72) was "modern" (as used below), and
>> similar to Erlang in several ways -- for example, messages were
>> received with "structure and pattern matching", etc. The language
>> was extended using the same mechanisms ...
>> As I recall, some of your early writings on Smalltalk sounded very
>> actor-like - i.e., objects as processes, with lots of messages
>> floating around, rather than a sequential thread-of-control model.
>> Or is my memory just getting fuzzy? In any case, I'm surprised
>> that the term "actor" hasn't popped up in this thread, along with
>> "object" and "messaging."
>> Miles Fidelman
>> -- In theory, there is no difference between theory and practice.
>> In practice, there is. .... Yogi Berra
>> fonc mailing list
>> fonc at vpri.org <mailto:fonc at vpri.org>
>> fonc mailing list
>> fonc at vpri.org
>-- In theory, there is no difference between theory and practice.
>In practice, there is. .... Yogi Berra
>fonc mailing list
>fonc at vpri.org
fonc mailing list
fonc at vpri.org
----- End forwarded message -----
Eugen* Leitl <a href="http://leitl.org">leitl</a> http://leitl.org
ICBM: 48.07100, 11.36820 http://www.ativel.com http://postbiota.org
8B29F6BE: 099D 78BA 2FD3 B014 B08A 7779 75B0 2443 8B29 F6BE
More information about the FoRK