←back to thread

1401 points alankay | 4 comments | | HN request time: 0s | source

This request originated via recent discussions on HN, and the forming of HARC! at YC Research. I'll be around for most of the day today (though the early evening).
Show context
Adam-Kadmon ◴[] No.11940379[source]
What is the best language to learn OOP concepts ?
replies(1): >>11946410 #
alankay1 ◴[] No.11946410[source]
Good question. If we are talking "real OOP", I'm not sure these days. What do other people think?

Smalltalk is very long in the tooth these days, but it is still "rather object-oriented in good ways".

Erlang and its derivatives are fun and good to help that kind of thinking.

replies(2): >>11947670 #>>11949486 #
npm83 ◴[] No.11947670[source]
What do you think is missing from Smalltalk, and what would you expect for the "21th century Smalltalk" if there was such think?

Even though is "old", I find it extremely valuable for learning to think and reason in a pure OO fashion.

replies(1): >>11948686 #
alankay1 ◴[] No.11948686[source]
It's worth thinking about what scales and what doesn't scale so well. For example, names are relatively local conventions. We could expect to have to find better ways to describe resources, or perhaps "send processes rather than messages". Think about what's really interesting about the way Parc used what became Postscript instead of trying to define a file format for "documents" for printers ... (a programming language can have far few conventions and be more powerful, so ...)
replies(3): >>11949633 #>>11949758 #>>11951418 #
npm83 ◴[] No.11949633{3}[source]
Thanks, Alan. I guess sometimes is hard to think about that level of scaling when working on the industry... or at least in projects that are not that massive.

I assume your are talking in the lines of "call by meaning" when you mention that names are relatively local, right?

As for "send processes rather than messages", isn't that what objects are about?

I mean...sending the real thing, not just "data" as part of a message. That reminds me of the Burroughs 220 and "delivering video + codec together" example you mention in your talks.

replies(1): >>11949739 #
alankay1 ◴[] No.11949739{4}[source]
Modularity is: what is the minimum you need to know to make use of a module, and what is the minimum that a module needs to know to help you?

Making this good is one of the secrets of scaling

replies(1): >>11956812 #
1. npm83 ◴[] No.11956812{5}[source]
Im afraid I'm missing the point about "sending processes rather than messages".

The modularity thing sounds pretty much to well designed objects to me, but it seems that you're trying to make a difference between that and processes.

What do you have in mind or, better said, which could be a concrete example of it?

replies(1): >>11957001 #
2. alankay1 ◴[] No.11957001[source]
The question is whether a "message" has enough "stuff" to reify into a real process (so it can help interpretation and negotiation) or whether the receiver has to do all the work (and thus perhaps has to know too much for graceful scaling of the system).
replies(1): >>11963173 #
3. npm83 ◴[] No.11963173[source]
I know I'm stuck in a box here. The other way around would be:

- what if we cant send processes instead of messages? - what are we missing? - which things cannot be done?

Pretty much what we have nowadays.

I find it hard to understand how sending processes (assuming they're not only objects but the context in which they live) help scaling the system.

Which example are you thinking of, that i cannot because I'm lacking this idea of processes rather than messages?

replies(1): >>11970308 #
4. infinite8s ◴[] No.11970308{3}[source]
How would we communicate with an alien civilization? How would we establish a common frame of reference from which to establish a communication protocol. Think along those lines...