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

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 :)




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

Search: