There are interesting things being done with Haskell:
http://www.dougandjean.com/hngn.html http://raintown.org/lava/For example, I've seen a meaningful subset of Haskell in which the compiler would only accept programs which would provably terminate. The compiler output could then be sent down the FPGA synthesis toolchain.
Side question: are "SW guys" satisfied with the tools/languages available for multi-core development?
Yes and no. The new C++11 memory concurrency model and the atomics and multithreading library support are a huge step in the right direction. But it's nothing particularly slick and it still feels clunky. The fancy tools still seem to be not-perfectly portable and open source.
I've always thought things like OpenMP and CUDA were steps in the right direction but still hacks.
I'm guilty of not having used OpenMP. I should try it.
CUDA seems well-designed and has a decently well-supported toolchain. But it's a vendor-specific technology. OpenCL seems to be almost as fast and supported by more vendors.
It seems to me like there's still problems to solve there as well.
I remember as a kid hearing my father talk about the computer they were building at the university for research on high-level parallelization. That was the Illiac IV, completed in 1976.