Sync vs Async

I‘m not neccessarily disagreeing with your thoughts, but for me synchronous always meant one-at-a-time order-dependent processing. Asynchronous meant any form of coordinated/supervised execution, where synchronisation happens at specific points forced by the programmer (await 3 things, wait for 1 of 2 things, finally do another thing - the synchronisation points are in between the steps).

This means an asynchronous process is comprised of other sync or async processes, with some synchronisation points. This notion always reminded me of monads somehow, and it ‚just fit‘ in my mind.

I‘m not so sure about snychronous meaning ‚can be concurrent/parallel‘, while you’re technically right, I feel we‘re mixing up stuff here. If we take a synchronous process to mean something like ‚runs from start to finish atomically and blocking‘, two or more of those which are not interdependent can be run concurrently, but that’s not interesting: What about those interdependencies? If there are some, we need asynchronicity to schedule them correctly for the dependency requirements to be fulfilled, they cannot run concurrently or parallel.

So for tasks which are independent of each other, it doesn‘t matter if you run them in a linear/sequential fashion or concurrently, while a set of tasks with interdependencies needs async coordination to ‚wrap them up‘ into something more like one synchronous task. It seems to me the whole thing is less about how things are executed, but about a way tasks can be divided and their parts coordinated that gives more optimal execution (more dense resource utilisation over any unit of time)