C++ was designed in such a way as to reuse as much of the existing C syntax, which can make C++ statements somewhat ambiguous as to their function.
C++ certainly isn't perfect, and I understand that some syntax is a little ambiguous. It's really less of a language trait, and more of a design trait. Either way, I can optimize things fairly well while retaining readable code.
I used to have this discussion all the time 10 years ago, except then it was Assembly vs. C++. Today I doubt you'll personally know ten people who bother writing programs in assembly (unless you happen to be Steve Gibson).
I doubt anyone seriously tries to program 100% in assembly, but it still has it's place: inline. You can embed small portions of assembly code in a C++ application to make sure time-critical bottlenecks are 100% optimized. In fact, I may even do this in my project unless I decide to go cross-platform.
In a couple more years, the same will be true for C++, I assure you.
I don't know. Moving from assembly to C++ is a huge step, but C#/Java/Python/etc. really isn't that much of a improvement. I know it offers managed code and everything, but that's nothing compared to assembly vs. C++.
But in 10 years processors will probably be so fast that it won't matter, so maybe you're right. Maybe optimization will be a thing of the past, but somehow I doubt it.
In summary: given the choice of developing a game in C#/Java/Python/etc. that runs at unplayable frame rates, and C++ at playable frame rates, I would choose C++.
P.S. Try MS Flight Simulator X if you want to get an idea what can happen if you neglect your optimizations. My high-end gaming PC can barely run that game at 10-20 FPS (and the graphics are nothing special), where almost any other high-tech game runs above 60-100 FPS.