Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Clear as mud. No matter how good Alan Kay is, he failed to properly describe messaging, as used in an Actor environment. He missed the Actor Programming model. Also the late Carl Hewitt failed to properly explain and implement a working Actor model. A shame, since there are many working Actor implementations in many languages.


Kay’s ideas are definitely interesting, but they can feel pretty vague. For example, what are these "fences" or "metaboundaries" he keeps mentioning? They probably aren’t anything like type checking since he seems to love dynamic typing and late binding. Did either Smalltalk or Squeak implement any of these "metaboundaries" at any point after this 1998 message?

When it comes to "messaging," it usually just boils down to method dispatch or large switch statements. It doesn’t seem like some magical concept we haven't figured out yet; it’s more like something we already know. When I see Kay's complaining about messaging, I imagine he also complaining about other things: "WE NEED BETTER WHEELS", or "WE NEED BETTER ELECTRICITY" (?). What do you actually want, Alan? :-p

From my experience with large Ruby codebases and publish/subscribe systems, debugging can become quite messy when there’s too much flexibility. I think this is what Kay is getting at, even if he maintains the idea that a dynamic system like Smalltalk will somehow evolve to fix these issues.


> Kay’s ideas are definitely interesting, but they can feel pretty vague

They seem vague because they are research questions. Tough research questions.

> [messaging] usually just boils down to method dispatch or large switch statements.

And that's the problem.

> [not something] we haven't figured out yet;

Well, we obviously haven't figured it out yet, because it ain't large switch statements or (just) method dispatch.

> debugging can become quite messy when there’s too much flexibility.

Exactly what he's talking about! Languages like Ruby have the metaprogramming flexibility, but they are lacking in the security of meaning department.

Languages like Go are pretty good in the security of meaning department, but lacking in the flexibility/expressiveness department.

So far, we have achieved either/or. He is saying what we need is both.

It's a tough problem.


> Kay’s ideas are definitely interesting, but they can feel pretty vague.

I agree on the whole, but I think he followed through this time. He gave pretty a set of cogent examples that doesn't leave the whole thing coming across as incoherent (like a mystic we're supposed to revere and take their words as some form of high wisdom that would make sense if only we could attain the requisite form of enlightenment). Viz:

> I would say that a system that allowed other metathings to be done in the ordinary course of programming (like changing what inheritance means, or what is an instance) is a bad design.

(There are two things being communicated here—what sorts of things he means when talking about transgressing the metaboundaries, and a position about whether it's a good idea to do it willy nilly—with his position on the latter being: No. The former seems clear enough and his take on the latter is definitely reasonable and might even qualify as "wise".)


It's important to note here that he is talking not about OOP concepts at a base level, but rather he is talking about designing OOP programming languages.

So we are seeing discussion about how to program a programming language. I

"When it comes to "messaging," it usually just boils down to method dispatch or large switch statements. It doesn’t seem like some magical concept we haven't figured out yet; it’s more like something we already know"

This feels like the Seinfeld effect, it sounds obvious in hindsight yes, but it's precisely because he was the pioneer, things like Java, microservices, json, APIs, have evolved from Kay's ideas.


> it's precisely because he was the pioneer, things like Java, microservices, json, APIs, have evolved from Kay's ideas.

Not to mention Excel, which uses cells, a concept invented by Alan Kay. He also invented OOP which in 1964 inspired the creation of Simula, the first OOP-Language.


> He also invented OOP which in 1964 inspired the creation of Simula

Not in this universe ;-)

See e.g. https://ethw.org/Milestones:Object-Oriented_Programming,_196...


Yeah, and Columbus didn't discover america, and windows did not invent window Interfaces, Notch did not invent minecraft, and Mullenweg didn't invent wordpress.

These are still THE most popular contributors to the subject by far, especially by measure of popularity.


In any case, he is a good storyteller.


I interpret a ‘fence’ here to mean a hoop the programmer explicitly has to jump through — something like Rust's `unsafe`. It doesn't need to be difficult to do but it should be difficult to do by accident :)


He is not describing Actor Programming model. He describe his own model.

Message passing in Smalltalk predates Hewitts Actor Model and was used as inspiration. The messaging in Smalltalk is little different and IMHO better in many cases.


But he's not describing Smalltalk. He is describing what he wanted Smalltalk to evolve into. Which he didn't know how to do, because otherwise we would have it by now.

This quip by him from OOPSLA '97 is well-known:

I made up the term object oriented. And I can tell you I did not have C++ in mind..

A little less well-known are the words that immediately follow:

So, the important thing here is: I have many of the same feelings about Smalltalk

https://youtu.be/oKg1hTOQXoY?t=634


Why would you a hypothetical quote of Kay for cutting off the full context that he also has criticisms of Smalltalk, and then cut yourself before he specifies that what he's not committed to is the syntax and library system, while the message-passing execution model is the important thing he's trying to promote? That just muddies the waters more. This email was sent a year after OOPSLA 97, so clearly he can't have been talking about messaging as Smalltalk's problem.

As for where he wants Smalltalk to go, that's what Squeak was for. He talked about it on plenty of occasions, at least one of which was also before OOPSLA, and actually did get a research team together to develop it out in the late 2000s: https://tinlizzie.org/IA/index.php/Papers_from_Viewpoints_Re...


The original Smalltalk in 1972, the language of which Kay designed, indeed had some kind of message passing (even though it was synchronous, the receiving object interpreted messages composed of tokens). Smalltalk-76, essentially designed by Ingalls, who was also the sole author of the 1978 publication, made a fundamental shift towards compiled virtual methods, essentially as it was done in Simula 67 and adopted by C++ (though much less efficient). So yes, it makes pretty much sense when Kay claims that he didn't have C++ nor Smalltalk in mind when talking about OO. See also https://dl.acm.org/doi/abs/10.1145/3386335.


If you want his view on Actors then the conversation with Joe Armstrong is enlightening.

The main common ground they share is that CSP becomes too synchronized and particular, making it too difficult to use for systems in the large.


It thought the final paragraph was very clear:

I would suggest that more progress could be made if the smart and talented Squeak list would think more about what the next step in metaprogramming should be - how can we get great power, parsimony, AND security of meaning?

Did you mean that he should have described actors, but did not?

To me at least, "ma" goes beyond just the actor model.


Actors solves a very different problem. Alan Kay was talking about enabling computing across heterogeneous systems.


What about actors makes that impossible?


Most of Alan Kay’s writings on that topic can be reduced to something along the lines of “I want things to be nice and problem-free. I have a vague feeling that there is a methodology called ‘OOP’ and ‘messaging’ that would achieve that. All systems that claim to be OOP that are not nice and problem-free are obviously missing the point.”


The problem with this is he led teams that built systems that proved his point.


They built systems, but I disagree that those proved his point. It’s not even clear what precisely his point is and how you would evaluate success or failure for it.

Regarding Smalltalk, there are conceptual reasons why it failed, some of which are mentioned in this thread: https://news.ycombinator.com/item?id=10071681


it failed? today's most popular programming languages are about half smalltalk derivatives (python, js, java, c#, and vb.net, but not c++, c, golang, sql, and fortran), apple is the world's most important computer manufacturer, wimp guis still dominate on computers that have keyboards, every web browser includes an ide with an object inspector, and virtually all programming is done in ides

that doesn't sound like failure to me


The royalties on the laser printer alone earned Xerox back PARC's entire expenses 200 times over but PaRc FaIlEd BeCaUsE xErOx DiDn'T kNoW hOw To mOnEtIzE tHeIr InVeNtIoNs.


> some of which are mentioned in this thread

Tell us which three you regard as most important; and which of the 61 comments in that thread demonstrate most clearly that they are important failings.


For example ?

(And which point was proved.)




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: