Where did that come from? Are you talking about auto-parallelization - or else how could you continue with imperative programming? I must say I like LINQ for the compositionality and the way I can uniformly attack every problem I can think of and build up
small building blocks but the same compositionality is not as easy with "purely imperative" programming - or is it?
Are you talking about auto-parallelization
Yes. I really don't want to know or have to care about what I can/can't do on a particular platform.
The complier should be able to work out what is possible, and the runtime/opsys should provide the required services to make the best possible use of the hardware. Certainly, it should be able to do it a lot more accurately and reliably than I could.
e.g. If I want to run a FOR loop, I just want it to go as fast as the platform will allow, and it should be the job of the compiler and underlying runtime/os to decide how best to implement/run it.
Of course, all of that is much easier said than done, and it might not be possible to get ultimate performace, but asking the application programmer to make decisions on when to implement parallel code, is just not going to work for 99% of programmers.