Blocking, Synchronous and Asynchronous Interfaces - Easy?

When programming in a functional, procedural or object oriented language in common use (Miranda/haskell/ML, Pascal/Modula/C, C++/Eiffle), the programmer only meets sequential single thread of control gedanken-execution models. For distributed systems (read, real distributed systems, as opposed to network split applications like trivial RPC based ones), this is inadequate to provide the 2 things that DOS might buy us: Failure transparency and parallelism. This part of the debate seems to circle around how much the system should do versus how much the ;SPM_quot;ordinary application programmer;SPM_quot; will be able to cope with. As with microkernels, this area is highly subject to subjective experience.