- Concurrent programming constructs allow a programmer to simplify their program by using multiple (heavy-weight) threads to reflect the natural concurrency in the problem domain. Because restructuring the program in this way can provide significant benefits in understandability, relatively heavy weight constructs are acceptable. Performance is also not necessarily as critical, so long as it is predictable.
- Parallel programming constructs allow a programmer to divide and conquer a problem, using multiple (light-weight) threads to work in parallel on independent parts of the problem. Such restructuring does not necessarily simplify the program, and as such parallel programming constructs need to be relatively light weight, both syntactically and at run-time. If the constructs introduce too much overhead, they defeat the purpose.
ParaSail is focused on providing parallel programming constructs, but concurrent objects are useful for more traditional concurrent programming approaches, particularly when coupled with explicit use of the "||" operator. It is an interesting question whether some higher-level process-like construct might be useful.