Live data from Hacker News

Alan Kay on the misunderstanding of OOP (1998)

lists.squeakfoundation.org

51–60 of 212 posts

Re: Alan Kay on the misunderstanding of OOP (1998)

#51
I might be wrong, but I think people like Alan Kay and Christopher Alexander have in common that they:

   * see that things can be done better (not as in upgrade but best);
   * have a global idea/feeling of how this could be done;
   * take a lot of ideas from nature.
And somehow I think they have a lot of trouble expressing the 'how'.

My take: we should take a good look at nature because this is closest to what we are. For example the communication between objects could be learned from cells.

Re: Alan Kay on the misunderstanding of OOP (1998)

#52
post #40

I find it interesting that everyone gets so up-beat about the ideology or philosophical debate about objects sending each object messages, hell even not relying to a message one object send you until a later date. Without even thinking about concurrency, state, and hell even the basics such as cyclic loops within a event based system! Though I keep hearing from Alan and other prominent language designers that we stil…

Part of the issue is that people have differing perspectives on computing.

One half, see it in terms of computer and data science. For these, data-structures, algorithms and ADTs are paramount. Organization of the problem is through modularity and functional decomposition. An object (as in OO) might be useful for encapsulation, data and implementation hiding, and code organization.

On the other hand, there are people involved in business, commerce, industry etc, who need to model concepts, real and abstract, and the complex relationships and constraints between them, into code. For them, an object can be the best way to represent a concept and an OO approach can be the best way to represent how concepts interact with each other.

Re: Alan Kay on the misunderstanding of OOP (1998)

#53
post #40

I find it interesting that everyone gets so up-beat about the ideology or philosophical debate about objects sending each object messages, hell even not relying to a message one object send you until a later date. Without even thinking about concurrency, state, and hell even the basics such as cyclic loops within a event based system! Though I keep hearing from Alan and other prominent language designers that we stil…

My gut feeling is that OOA/D/P will best be remembered as a revolution in analysis, not programming. As a programming concept it's a mixed bag. As an analysis tool I don't think it has an equal.

Re: Alan Kay on the misunderstanding of OOP (1998)

#54
post #40

I find it interesting that everyone gets so up-beat about the ideology or philosophical debate about objects sending each object messages, hell even not relying to a message one object send you until a later date. Without even thinking about concurrency, state, and hell even the basics such as cyclic loops within a event based system! Though I keep hearing from Alan and other prominent language designers that we stil…

> I've seen too many project's that have drunken the cool aid and has resulted in 5-10 level deep inheritance tree's with their own branching logic trying to fit behavior to a specific taxonomy.

I don't think you understand Alan Kay's version of OOP, if you think inheritance is a key part of OOP.

I was interested in this stuff during the summer and I wrote up the following question/answer if you're interested on what Alan Kay's version of OOP was:

https://cs.stackexchange.com/questions/51847/what-is-the-dif...

I answered my own question so I might be wrong, but I have put in a reasonable amount of research effort into it.

Re: Alan Kay on the misunderstanding of OOP (1998)

#55

Earlier quoted context omitted.

One example is the HTTP GET request. This was originally conceived of as a file download, where the URL path is mapped directly to filesystem paths. GET as an RPC: "download the file at this location." But in modern thinking, HTTP GET is a request with abstract semantics. The URL's path is abstract, and may be interpreted arbitrarily by the server. The client has no idea whether the request is serviced by a simple se…

As defined in both RFC 1945 and 2616 (that is, as always has been defined): "The GET method means retrieve whatever information (in the form of an entity) is identified by the Request-URI." The thing is that there's no difference between abstract and concrete semantics in terms of definition of what is a function or message and what is not. You can send a message or call a function with very concrete semantics ("plea…

HTTP GET was initially defined to "Please transfer a named document back." [1]. The idea of interpreting the path to dynamically generate a document came later. If you like, you can think of it as a shift from Apache-circa-1999 servers that expect to deal primarily in files, to Rails-style servers that primarily route requests to dynamic code.

You're right that design patterns like Facade are often used instead of exploiting messaging. But this comes at a price: clients are necessarily aware that they are talking to a Facade. Discovery and negotiation are done statically, via the type checker. Versioning is static too. Everything it tightly coupled.

Say you have a String, and you want to concatenate it with another String. You check the docs, or StackOverflow, or IntelliSense, right? What you don't do is use Reflection to list all the methods, and pick based on their name. And you certainly don't feed an input to each method, and pick the one that gives the right output! (This strategy is routine in Smalltalk! [2])

Now say you want to build a web search engine. Do you try to statically build up website descriptions? Maybe you check StackOverflow for the HN link structure, catalog it for everyone? No, you start at the root, interrogate it, and build the link graph as you go. You have a conversation with the remote site, and perform discovery dynamically.

That's messaging! And that's why URLs are a better example than most modern programming languages: the value of OO is best realized when you have loosely coupled components, like on the Internet. (Alan Kay wrote that every object should have a URL. [3])

[1] http://www.w3.org/History/19921103-hypertext/hypertext/WWW/P...

[2] http://wiki.squeak.org/squeak/1916

[3] https://ivanovivan.wordpress.com/2010/09/13/alan-kay-quotes/

Re: Alan Kay on the misunderstanding of OOP (1998)

#56
post #40

I find it interesting that everyone gets so up-beat about the ideology or philosophical debate about objects sending each object messages, hell even not relying to a message one object send you until a later date. Without even thinking about concurrency, state, and hell even the basics such as cyclic loops within a event based system! Though I keep hearing from Alan and other prominent language designers that we stil…

Well, try to remember that for Alan, inheritance is at most an optional feature of OOP, so maybe those "5-10 level deep inheritance trees" aren't as much about people drinking the OOP "cool-aid" as you think.

Re: Alan Kay on the misunderstanding of OOP (1998)

#57
Why didn't he call it Message Oriented Programming then?

Would have been a much clearer name.

But now we have all these clunky OO-systems, that focus on objects and classes and still use functions/methods instead of messages...

Re: Alan Kay on the misunderstanding of OOP (1998)

#59
post #20
post #3

Are there any examples of Kay's ideal other than The Internet? Especially systems that I could actually inspect and learn about in detail, rather than read short stories about.

Erlang.

And actor-based systems in general. Akka is a good modern example of one that's not Erlang.

Re: Alan Kay on the misunderstanding of OOP (1998)

#60
post #40

I find it interesting that everyone gets so up-beat about the ideology or philosophical debate about objects sending each object messages, hell even not relying to a message one object send you until a later date. Without even thinking about concurrency, state, and hell even the basics such as cyclic loops within a event based system! Though I keep hearing from Alan and other prominent language designers that we stil…

Well, try to remember that for Alan, inheritance is at most an optional feature of OOP, so maybe those "5-10 level deep inheritance trees" aren't as much about people drinking the OOP "cool-aid" as you think.

Both simual and smalltalk inheritance was added later in the languages history. Yes its optional but it doesnt stop people making a mess of things when they categorise their objects based on data type instead of behaviour
Post reply on HN