Live data from Hacker News

Alan Kay on the misunderstanding of OOP (1998)

lists.squeakfoundation.org

11–20 of 212 posts

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

#11
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.

Biological cells:

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 useful).

(from http://www.purl.org/stefan_ram/pub/doc_kay_oop_en)

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

#12
post #8

How is messaging different than calling a method?

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

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

#13
post #7
post #4

Earlier quoted context omitted.

Squeak[1]/Smalltalk? (i.e. have you worked with what he would consider a 'real' message-oriented OO language?) [1] http://squeak.org/downloads/

I played around with Squeak many years ago, but might appreciate it more now. What recently spurred more confusion on this topic was Alan Kay's discussion with Rich Hickey during the AMA the other day. https://news.ycombinator.com/item?id=11945722 I found it really hard to understand what Alan Kay is actually talking about. Saying things like > This is why "the objects of the future" have to be ambassadors that can n…

You are correct, Smalltalk as-is can't currently do that. I believe he was referring to a future language / evolution / system that he would like to see, not something that currently exists. These are the sorts of things I think he's expressing his frustration about when he says things like Smalltalk getting long in the tooth etc. in that it was never intended to the be-all, end-all of languages... just one stop along a path.

But don't let this discourage you from looking into Squeak. I played around with Squeak in the 90's but couldn't see past things like the weird mouse button mappings and color scheme. Fortunately I came back to it again and found some of the glaring UI issues (by modern standards) had been smoothed over. It also probably didn't hurt that I was a little older and better able to stick with it until I could finally see better the second go at it what the original vision was. Also, there is the work from his STEPS project which used Squeak as a platform that was used to prototype some of the next-generation ideas he talks about.

If you want to understand better the next generation concepts, definitely look at the VPRI writings (esp. the STEPS annual reports) linked to in a previous post. To bridge the gap from here to there (i.e. to get to a tangible system that you can actually use that does any of this) I think you're probably going to want to learn Smalltalk as a starting point.

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

#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 hierarchies to people in their first two months of programming education. And then tests it mostly using multiple-choice quizzes. It's totally inappropriate - most of these students would fail fizzbuzz.

OOP should be something you only get into after you have written some practical programs, rather than something where you can't program, but you memorize the difference between "is-a" and "has-a" inheritance so that you can pass multiple choice tests.

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

#16
post #7
post #4

Earlier quoted context omitted.

Squeak[1]/Smalltalk? (i.e. have you worked with what he would consider a 'real' message-oriented OO language?) [1] http://squeak.org/downloads/

I played around with Squeak many years ago, but might appreciate it more now. What recently spurred more confusion on this topic was Alan Kay's discussion with Rich Hickey during the AMA the other day. https://news.ycombinator.com/item?id=11945722 I found it really hard to understand what Alan Kay is actually talking about. Saying things like > This is why "the objects of the future" have to be ambassadors that can n…

Here's my understanding of the general idea (let me know if I got something wrong!). Say you have a bunch of computers with different software and hardware. You come up with a cool new image format called "PJEG". To get the images to show up on all the computers, you typically do the following:

    * Publish a PJEG spec
    * Define a .pjeg extension and let everyone know that means it's
      a PJEG file
    * Write a PJEG encoder/viewer for each kind of computer
    * Distribute these programs to the computers
    * Configure the computers to open .pjeg files using the programs
      you distributed
    * Modify other programs (image editors, web browsers) so they
      can recognize, encode and view PJEG files as well
    * etc...
This approach doesn't scale very well. I think the alternative Alan is suggesting is that you'd include an interpretable description of the file format in the file itself in a sort of meta-format. Once you have an interpreter for these meta-format descriptions, all you'd have to do is:

    * Include an interpretable PJEG encoder/viewer with every PJEG file
And that's all! Any program able to read the meta-format could use this file without any extra software. This obviates file type metadata and reduces the amount of distribution you need to do, making the whole thing way more scalable. The practical problems with this solution (larger file size, slow encoding and decoding) can be solved in various ways:

    * The larger file size can be mitigated by format negotiation
      (if I already know about the format, you don't have to tell
      me about it)
    * Optimized encoders and decoders can be written to replace the
      slower interpreted ones included with the file
Having the interpreted format description makes it easier to validate the optimized version, too (you can generate a bunch of random examples and make sure they decode/encode the same way). And this doesn't have to just be for files, you can use the same technique for arbitrary "data types" in your program as well.

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

#17
post #12
post #8

How is messaging different than calling a method?

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.

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

#18
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…

OOP made sense to people who already knew structured programming and understood functional decomposition (what we now call 'refactoring'). Perhaps education should start with that and then justify OOP? I remember reading about the original LOGO experiments; one thing kids do not spontaneously do is break up their monolithic actions into sensible functions.

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

#19
post #8

How is messaging different than calling a method?

Same thing. The difference is that you are not required to construct class hierarchies in order to perform messaging.

Messaging works perfectly well in a composition-over-inheritance setting. See also: Erlang.

Post reply on HN