>> 10/20 years from now, everyone will have to learn how to write parallel algorithms to a degree not even imagined today
> So you could learn about low-level code and compilers.
No, you could learn mathematics and algorithms (which I already said). A least-squares curve-fitting regression method works the same in all languages. A Fast Fourier Transform works the same in all languages. Quicksort works the same in all languages. These examples have in common that they are all expressed in universal mathematical notation, and they all carry out the same basic algorithms in the same way, regardless of which language they're expressed in. But all of them would need to be modified to take parallelization into account and exploit it to its fullest.
> As far as I know, there have been developments for more than 10 years that aim towards better parallelising compilers.
That's true, but it's also true that the real challenges of parallelizing algorithms have yet to be addressed in any meaningful way, for lack of suitable hardware. One example is the problem posed by race conditions among independent processes, which is a big argument in favor of immutable variables and functional languages. But these issues have to be examined in light of specific hardware -- they can't be fully worked out in advance of the existence of the target hardware.
> So you could learn about low-level code and compilers.
No, you could learn mathematics and algorithms (which I already said). A least-squares curve-fitting regression method works the same in all languages. A Fast Fourier Transform works the same in all languages. Quicksort works the same in all languages. These examples have in common that they are all expressed in universal mathematical notation, and they all carry out the same basic algorithms in the same way, regardless of which language they're expressed in. But all of them would need to be modified to take parallelization into account and exploit it to its fullest.
> As far as I know, there have been developments for more than 10 years that aim towards better parallelising compilers.
That's true, but it's also true that the real challenges of parallelizing algorithms have yet to be addressed in any meaningful way, for lack of suitable hardware. One example is the problem posed by race conditions among independent processes, which is a big argument in favor of immutable variables and functional languages. But these issues have to be examined in light of specific hardware -- they can't be fully worked out in advance of the existence of the target hardware.