Smalltalk does not do message-passing (!).
Smalltalk does method-calling. Method-calling involves blocking.
Set up the parameters.
Call the method.
Block, waiting for the return value before proceeding.
Blocking is usually implemented as a state machine that performs low-level synchronization.
In my mind, message-passing is "fire and forget". Not synchronized by default.
Blocking mixed with FTL (faster-than-light) rewriting (aka "referential transparency") works when your medium is paper, but, is overly-restrictive when your medium is reprogrammable electronic machines (aka "computers")
Starting out saying that your control-flow data works only with one pre-determined architecture of state machines that implement blocking and tight coupling, causes accidental complexity and wastes design time for finding workarounds.
Saying that a piece of data, say a string, is the same as another piece of data, a control-flow directive, makes it hard to debug the code and makes it hard to figure out what the data is meant for. Is this a value or is this a control-flow operation?
I worked on a whack of Eiffel code that someone else wrote. This required too much reverse-engineering and head-scratching, since abstractions were heavily used and control-flow was hidden in the form of data. In some cases, to follow the flow of control, I ended up going “down” into a hierarchy only to find that the operation was punted to another hierarchy, i.e. I had to go back “up” then “down” into another hierarchy. All I wanted to do was to figure out how a certain value came to be, but, I ended up spending most of my brain-power figuring out where the value was created. By the time I finished unraveling the control flow, I had mostly forgotten why I unravelled the control flow and what I wanted to know.
Encapsulation of data using inheritance is OK for data representing information, but, inheritance is backwards for data which represents control flow. Control flow needs something else. I call it parental authority.
See Also
Twitter: @paul_tarvydas