Live data from Hacker News

Alan Kay on the misunderstanding of OOP (1998)

lists.squeakfoundation.org

131–140 of 212 posts

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

#131
post #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…

Alan was a Molecular Biology major in college and has stated before that the basis for OO messages was originally inspired by cellular communication:

> I thought of objects being like biological cells and/or individual computers on a network, only able to communicate with messages (so messaging came at the very beginning -- it took a while to see how to do messaging in a programming language efficiently enough to be do messaging in a programming language efficiently enough to be useful).

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

#132
post #14

IMO the problem with object-oriented programming is that it turned into the standard curriculum for peoples' first semester of computer science, rather than being yet another interesting concept that advanced programmers would ponder. And the way we handle "the standard CS curriculum" sucks. (In the USA at least.) For example, AP Computer Science requires Java and tries to teach stuff like designing inheritance hiera…

This is the consequence of not teaching domains of problem-solving through actual problem-solving. You see the same thing in math. I had an excellent practitioner of this method for AP calculus. I learned limits by attempting to find the area under a curve using ever-shrinking rectangles, until we got to pushing them to zero width. And now, 15 years later, I still remember the concept. I don't necessarily remember how to do any particular problem involving limits, but I know what limits are and when they apply to a problem.

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

#133
post #8

How is messaging different than calling a method?

Short Answer: Calling a method is "Command and Control" where "command" is about getting a thing to do something that you want, and "control" is about preventing a thing from doing something that you don't want. In any case, you're running the process. Message passing is about negotiating with something that is already in process. It turns out that this is the key to building scalable¹ systems (for all the usual reas…

Thanks! This is a great description of what I think Alan is trying to describe. The issue most people seem to be facing is that they are trying to map his ideas of messaging onto their current conceptions of what software should look like, instead of stepping back (way back) and saying - how would a bunch of Universal Turing Machines communicate? Software today is fixed functionality - once it's written it can only be changed with great pain. What if we made meaning and interpretation of messages 'late-bound'?

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

#135

I don't really understand this obsession with messages. We're moving away from it. This is not how we program in the 21st century. The last popular language that supported this paradigm (Objective C) is being replaced and will probably be all but gone in just a few years as Swift (not message based) takes it place. Besides, this idea of message passing is really not that useful for modern programming anyway but a lot…

>> This is not how we program in the 21st century

Sadly, how we program in the 21st century isn't much different to how we programmed in the early 20th century when computers were first invented (at least to a 1st order approach).

Where are the Maxwell equations of Computer Science?

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

#136

Earlier quoted context omitted.

Could you elaborate leading by example `how it is different`? Seriously because unless you can define it, and quantify it then it is just rhetoric.

> "Could you elaborate leading by example `how it is different`?" I'll try. By the end of the 1950's, modular programming based on procedures and subroutines had become problematic. It was hard to have large teams of programmers working on parts of the code at the same time, and it was hard to create large well-structured programs. The answer in the 1960's was to break down a problem into pieces, then sub-components,…

Thanks aryehof for the explanation. It answered a question that I have had in the back of my head all week.

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

#137

Here is another important clarification email from Alan regarding the meaning of OOP that I found to also be helpful: http://www.purl.org/stefan_ram/pub/doc_kay_oop_en

Note this email and conclusion are from 2003-07-23:

> OOP to me means only messaging, local retention and protection and hiding of state-process, and extreme late-binding of all things. It can be done in Smalltalk and in LISP. There are possibly other systems in which this is possible, but I'm not aware of them.

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

#138
post #17
post #12

Earlier quoted context omitted.

Alan commented on this several times in the AMA he did here a couple days ago: https://news.ycombinator.com/item?id=11957001 https://news.ycombinator.com/item?id=11945986 https://news.ycombinator.com/item?id=11945123

I have to admit I still have basically no idea what he's talking about when he says 'messaging'. A practical example would be useful for us non-CS-degree programmers who don't speak any of the CS lingo.

Imagine two solutions to a problem.

One has a main procedure that orchestrates itself and other code to work things out and do things. This is the way most people organize their problems into code.

The second is a set of independent intelligent concepts (objects) that work together to work things out and do things. The objects work together only by sending messages to each other. There is no central code orchestrating them into a solution.

If you want an example, consider two tennis players and a ball. How would your represent them hitting the ball to each other in code?

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

#139
post #85

Earlier quoted context omitted.

What an object does when it receives a message is hidden, and entirely up to that object. >>> All in all, this seems to be a whole lot of syntactical hair splitting Or, simply a case of not understanding.

Or not having the 10000 feet outlook. Checking some links to Kay's responses elsewhere, i get the impression that unless we basically toss the notion of a programs as a singular compiled file of binary, and replace it with some kind of abstract notion of work that can happen on a single computer, or across the net as a whole, the distinction between a message and a method is academic at best. Because for message as a…

Yes, exactly. Step back (wayyyyyyy back) from your current understanding of what software should look like.

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

#140
I'm thinking the closest mainstream thing to real messages is probably event handling. Events are nearly always represented as objects of some sort (rather than something simpler like a function call) and event routing is the heart of any UI framework.

So maybe the question is whether we should be using events (and streams of events) more?

But this doesn't seem like a neglected area - publish/subscribe is pretty common and there's plenty of recent discussion of reactive systems and event-handling architectures.

Post reply on HN