An idea overlooked by Functional Programming and premature-optimization: a component must not name another component, hence, it must not SEND to (nor CALL) another component directly.

Components must leave output messages in their own output queues. Parents of the components1 route the messages from output queues to input queues accordingly. This provides inherent flexibility that premature optimization does not allow for, hence, 50 years (and counting) of re-discovery of the basic principles of CPU behaviour.

Due to advances in hardware, we can afford to go back to the original model of async components, i.e. no shared memory.

Many aspects of software become massively simpler.

Appendix - See Also

References

https://guitarvydas.github.io/2004/01/06/References.html

Blog

blog

Blog

obsidian blogs (see blogs that begin with a date 202x-xx-xx-)

Videos

videos - programming simplicity playlist

Pamphlets

DSL for Writing DSLs

Is Concurrency Difficult?

Discord

Programming Simplicity all welcome, I invite more discussion of these topics, esp. regarding Drawware and 0D

Twitter

@paul_tarvydas

Books (WIP)

leanpub

  1. the parent is a “Container” - a mini-router