Hacker News new | ask | show | jobs
by mempko 2 days ago
Thanks, that's some great research, I updated the post!

As you pointed out, how objects handled message passing is isomorphic with Simula's discrete events. However the real story about messages is late-binding, which is the core idea.

1 comments

You have to consider that there is actually no true message passing in Smalltalk. Smalltalk just uses that term for dynamic dispatch of compiled methods and calling them (synchronous local invocation). Since Smalltalk 76 methods are compiled and there is a dynamic dispatch mechanism similar to Simula 67 (or Java); the main difference is that Smalltalk uses an internalized pointer to the selector (i.e. method signature) for dispatch instead of the more efficient method index used by Simula 67 and most modern OO-languages (including Java); essentially all OO languages support late binding. When you read e.g. https://dl.acm.org/doi/10.1145/3386335 (highly recommended), Ingalls describes that the first Smalltalk implementation in 1972 was a bit closer to "message passing" in that token streams were sent to an object for interpretation, but that was synchronous and local as well (like the later method dispatch) and the objects were not "active" (in contrast to e.g. the Actor Model as implemented e.g. in Erlang). I spent a lot of time building tools to study the internals of Smalltalk-80; if you are interested in the technicalities, here is the link: https://github.com/rochus-keller/Smalltalk/.
Thanks, I'll check it out! When I implemented messaging for Abject, I used the Erlang model. I also added P2P support so objects can talk across the network.

There is this great discussion between Joe Armstrong and Alan Kay if you haven't see it. https://www.youtube.com/watch?v=fhOHn9TClXY

EDIT: Just checked your smalltalk implementation. Very cool! Do you remember the Open Croquet project in the early 2000s? Way ahead of it's time. I wonder if a modern version of that could work today now that we have good VR headsets.

I still wasn't able to get on your https://abject.world/ implementation. I tried yesterday and today and always get the message below. I'm on Linux debian bookworm with Firefox. Tried both http and https.

  Secure Connection Failed

  An error occurred during a connection to abject.world. PR_END_OF_FILE_ERROR

  Error code: PR_END_OF_FILE_ERROR

    The page you are trying to view cannot be shown because the authenticity of the received data could not be verified.
    Please contact the website owners to inform them of this problem.
Hey, can you try again? There was certificate issue that should be fixed now. Thanks!
Still the same, even after waiting a day.