Bill McColl has an interesting essay at his site on the differences between supercomputing and commercial parallel computing, and the direction that these drivers may push next generation programming approaches. From his post
In the industrial and commercial world:
- Applications and services are usually interactive and real-time.
- Programmers need to work at a high level to ensure reusability etc.
- The time, effort and cost to develop and maintain code is critical.
- Most software developers have only a limited range of programming skills, and usually no experience whatsoever of parallelism.
- Fault tolerance is essential.
On the question of whether a single uber parallel language will evolve for industrial needs:
My own view, based on more than 20 years of research in this area, is that this is very unlikely, certainly in the short to medium term. Instead I expect that we will see a number of powerful new domain-specific parallel languages emerging that quickly capture a large user base by being high-level and easy-to-use, with all of the complex implementation aspects of mapping, scheduling, load balancing and fault tolerance being handled automatically.