> The mental image was one of separate computers sending requests to other computers that had to be accepted and understood by the receivers before anything could happen. In today's terms every object would be a server offering services whose deployment and discretion depended entirely on the server's notion of relationship with the server.<p>1993 called and wants its micro-services. That is great. At least it seems like he is describing Go's channels, Rust's tasks, and most of all Erlang's processes.<p>It is interesting, perhaps it is a reflection on how some of these concepts are abstract that anything can be read into it, but it seems that the initial design and motivation behind OO has been perverted by C++ and Java.<p>I started with C++ and Java in college. To me OO was inheritance, composition, and polymorphism, and so on. Years later, when distributed and scalable computing is talked about other languages and platforms seems more OO than the classic OO.<p>And finally one more excerpt:<p>><p>---<p><pre><code> 1. Everything is an object
2. Objects communicate by sending and receiving messages (in terms of objects) Objects have their own memory (in terms of objects)
3. Every object is an instance of a class (which must be an object) The class holds the shared behavior for its instances (in the form of objects in a program list)
</code></pre>
---<p>Pretty funny. Replace 'object' with 'process' and you have Erlang, the last language you'd call OO : 1) everything is a process 2) processes sending messages to each other. Each process has an isolated heap (won memory). 3) Functions in modules hold the shared behavior of many possible process instances spawn from it.
Glad to see someone posted this again. This is without a doubt one of the best papers I've ever read. Drives home that Alan Kay is truly brilliant.
Here's a better one, with a github for corrections: <a href="http://worrydream.com/EarlyHistoryOfSmalltalk/" rel="nofollow">http://worrydream.com/EarlyHistoryOfSmalltalk/</a>