I think Akka is sort of heading in the right direction in its ubiquitous language. Akka talks about itself in terms of solving the &quot;distribution problem&quot; - not necessarily across machines but machines OR cores. It talks about &quot;location transparency&quot; as a first principle meaning that an actor&#x2F;worker that processes a message can be either on another CPU or another physical machine and the location of that actor is transparent from the perspective of the code - it&#x27;s a deployment&#x2F;configuration concern.<p>It&#x27;s convenient that multicore utilization is a scale problem at the same that utilizing networked compute resources (ie in the cloud) is  scale problem resources because we might be able to treat them as similar problems. Yes the network introduces some other unique qualities (<a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Fallacies_of_distributed_computing" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Fallacies_of_distributed_compu...</a>) but apart from reliability assertions it&#x27;s an interesting observation that they can be treated similarly if message passing mechanics are abstracted. eg they both fit asynchronous, event driven paradigms. both need elimination of shared state to not make errors in your code (required over the network).<p>Multicore concurrency in code isn&#x27;t too hard but threads&#x2F;locking are probably the wrong abstraction. Similarly,  functional approaches might be a better &quot;default&quot; approach for a concurrent world.