A Simula I event notice (time, process) in the sequencing set is just a message step(process, time) in a priority mailbox; the two are the same mathematical object, making Simula's discrete-event active processes and message-passing active objects trivially isomorphic.
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.
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/.
> The person who coined the term "object-oriented programming"
See https://news.ycombinator.com/item?id=36879311 for who coined the term.
> before he developed Smalltalk
See https://dl.acm.org/doi/10.1145/3386335 for who developed Smalltalk.
> The big idea [..] was messaging
A Simula I event notice (time, process) in the sequencing set is just a message step(process, time) in a priority mailbox; the two are the same mathematical object, making Simula's discrete-event active processes and message-passing active objects trivially isomorphic.
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.
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/.
OOP is already in our blood for those ancient programmers like myself.
YOP is the mainstream in nowadays vibe coding for developers whose main job is click Yes.
Haha, haven't heard of Yes Oriented Programmer. I'll have to use that one.