C++ is a bit antiquated, but I don't see any viable replacements currently. The newer languages have nice features, but are usually not native code compiled, nor do they offer the same kind of efficiency in terms of both run-time speed, and packaging size. (Mind you, C++ can be terrible in terms of packaging size, depending on how you use it).
D seems like it comes close, but it just doesn't feel ready yet. The installation was a pain the first time I tried it. It's better now, but still, you can't install to a path with spaces in it, like "Program Files", where everything else gets installed. I find that kind of lame. More serious though, is the standard library issue. There is the official one packaged with the compiler, and the more extensive replacement one, which a lot of people and code projects have switched to. I don't like having to decide on an issue like that. Especially since it affects what projects your code can then be used in, since the two are not quite compatible with each other. On top of all that, since the language is so new and still in development, the documentation doesn't always accurately reflect the way things currently are. I've tried example code out, only to find the functions used are not present in the "standard library" anymore. Some were renamed, some were moved to new packages, and some were deprecated in favour of another way of doing things.
Languages like Java aren't too bad, but I hate the JVM. It's a huge memory hog, and often super slow. Especially on low memory systems due to the memory hog issue. It's also usually terrible for initial load-up time. I might be more interested in the language if native code compilers were more common place. Mind you, I still find the language a little needlessly verbose, and I'm not too fond of the very long package names, and how absolutely every function must belong to a class (even if it's simply declared as static). Do trig functions really need to belong to a class? I suppose you could just treat the classes like modules, but I normally expect to be able to "new" a class in a sensible way, so that seems strange to me.
I've never used languages like C#, so I can't really comment too much. I've read a little bit of the language specification, and it seemed pretty neat. I'm not too sure about the compiled nature of it though. Sounds like it doesn't compile to native code. Mind you, I've also heard of ideas such as compiling to native code during installation, so you can make full use of the features of the host CPU, rather than distributing a generic executable. I'm not sure if this has ever been done though. I suspect in practice it's a bit like the JVM. I've also heard there can be significant overhead with certain code. I've never tested it out myself though.