One of the fundamental problems is the languages used to program in. Regular C/C++ with a thread library is just not very good to express parallism in, because you have to manually set up/define what constitutes a thread. The biggest problem here is the granularity of parallism, it's a bitch to go very fine grain because your code gets swamped by IPC and thread control stuff.
A better starting point would be Occam or CSP (and there are C variants of both), which would allow the programmer to express all the parallism in a program that he would care for. The compiler could then decide what to spawn off in separate threads and what should just be executed sequentially in the same context.
Another (and harder) problem is that of debugging. Reproducibility is a lot harder when you go async processing all the way. You really have to design for program failure when you have big parallel software systems
Cheers
A better starting point would be Occam or CSP (and there are C variants of both), which would allow the programmer to express all the parallism in a program that he would care for. The compiler could then decide what to spawn off in separate threads and what should just be executed sequentially in the same context.
Another (and harder) problem is that of debugging. Reproducibility is a lot harder when you go async processing all the way. You really have to design for program failure when you have big parallel software systems
Cheers
Last edited by a moderator: