Settings

Theme

A Love Letter to Object Orientation

blog.mempko.com

3 points by mempko 8 days ago · 9 comments

Reader

Rochus 7 days ago

> 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.

  • mempkoOP 7 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.

    • Rochus 7 days ago

      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/.

      • mempkoOP 7 days ago

        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.

        • Rochus 7 days ago

          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.
          • mempkoOP 7 days ago

            Hey, can you try again? There was certificate issue that should be fixed now. Thanks!

boveyking 8 days ago

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.

  • mempkoOP 8 days ago

    Haha, haven't heard of Yes Oriented Programmer. I'll have to use that one.

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection