In this post dvyukov argues about the lack of programming tools when dealing with "unstructured concurrency" programs; more specifically, I'm thinking at those situations in which you have a system of heterogeneous software components concurrently interacting in a non trivial and non predetermined way.

In these scenarios threads have simultaneously a program structuring effect ( encouraging componentization, where to each concurrent processing unit corresponds specific services / responsibilities ) and a performace impact ( because being the system heterogeneous , you can add new components without affecting the overall user experience via parallel execution ). Performance is not critical, in the sense that performance requirements are not strictly specified, but it's a valuable asset, in the sense that more responsivity and less time will be positively perceived by the user. Therefore, program correctness and scalability (with respect to parallel hardware) become more important then absolute performance and tight synchronization control.

What are your general view on the subject, espacially regarding tools/programming languages/frameworks ?