> I think it's only a matter of time before Scala (or something like it) starts outperforming C++ on parallel problems.
It is certainly plausible. But a few things need to change
(i) JVM applications tend to be memory heavy, even if you can approach 75% of the run time speed of a C or a C++ application you would typically need a lot more memory. In my expeience it has been 8 times or more, YMMV.
(ii) The other problem is that all the exciting native SIMD instructions are mostly out of reach. This can be a drag especially when your code uses log and exponentiation a lot. Without SIMD they are terribly expensive.
(iii) The kind of things that I use C++ for is heavy in array operations, in particular manipulating sparse arrays. In these applications the loop bounds are not constant and it is impossible to ensure at compile time that the array indexing will not go out of bounds. There Java's runtime bounds checking does slow it down. A way to override the safety would help.
(iv) The other good thing about C++ is the ability to delay evaluation via the use of templates, I am talking about expression templates. Its not pretty by any one's standards but with suitable libraries you can get the job done.
> I don't think any Lisps are fast enough to be interesting to you
Under favorable circumstances Lisps can easily give C++ a run for its money, even on numeric code. For that take a look at Stalin. It's unbelieveable how much one can optimize, even without type annotations.
There are few new curly brace languages out there, that are trying to simplify generic programming. D is the more mature among these and the new exciting ones are Clay, Deca and Rust. All have been discussed on HN. Exciting times ahead.
A multithreaded runtime for OCaMl will be realy cool. I do not need that threads be surfaced as an API but the possibility that parallelism exposed by the functional style can be exploited by the runtime (perhaps based on options used to start the runtime).
Yes there is F# but mono I hear is not that great on Linux, though I have not tried it myself.
OCaMl / Stalin: An old and civil discussion https://groups.google.com/group/comp.lang.scheme/browse_thre...
Clay: http://claylabs.com/clay/ and recently discussed here http://news.ycombinator.com/item?id=3474722
Deca: discussed here http://news.ycombinator.com/item?id=3413936 and here http://news.ycombinator.com/item?id=3413936
Rust and D I think do not need championing :)