I gotta say, 5 years ago I was worried C++ was going away. Microsoft was talking up C# everywhere and everyone was learning Java in school, and I wondered which way I needed to jump when I bit the bullet and retrained. But now... Oracle is attempting to flush Java down the toilet sueing everybody doing any innovation with it. Turns out C# was the answer to the question, "How can I quickly train up a bunch of Indian programmers with associates degrees who will work for peanuts?" Learn C# and that's who you have to compete against. (And there's nothing wrong with those guys except that they will work for peanuts). Then C++ turned out to be way faster than C#, and the desktop PC is less relevant than ever. I'm feeling much better about that horrible old unmanaged language... Only I know how to use smart pointers so I don't have resource leaks. And I know how to use custom allocators in the unlikely event I should need finer control over memory management than I already have. And I know how to get templates to do all my work at compile time, so my code is competitive with the best hand-written assembler. I wish C++ was easier to learn. I wish it didn't have so many rules that piled up in combinations. But for the well-trained it's a rich and powerful toolkit, capable of the fastest possible execution. Learning to get good at the hard stuff is what you have to do if you want to stay employed in the 21st century.