Honestly, the best place to start is with the basics: strong and deep Math background, strong understanding of how to code well and efficiently without necessarily using any particular language, how compilers work and best to use them for efficient compiling, how hardware and O/S work together, O/S kernels and drivers, etc..
Languages in of themselves you can learn rather easily if the foundation is strong. It's only details and specific changes from one to the other...
Honestly, the best place to start is with the basics: strong and deep Math background, strong understanding of how to code well and efficiently without necessarily using any particular language, how compilers work and best to use them for efficient compiling, how hardware and O/S work together, O/S kernels and drivers, etc..
Languages in of themselves you can learn rather easily if the foundation is strong. It's only details and specific changes from one to the other...