||I'll have to disagree with C#.
First of all, the language is only in beta. The details are still open to change.
Secondly, it is extremely close to java in methodology. Theres no reason to have both
Third, no one knows C#. It is not an established language and it is yet to be seen wether it will survive or flop.
Fourth, the last generation of C++ compilers have NOT hit the market. I highly doubt that research into code generation will stop because Microsoft decides to bring some new language into the market. Especially since most research in compilers is in the academic arena, which is mainly unix based. Also, C++ is natively compiled- C# is not. That means the same program, compiled in C++ over C#, will give about a 20% speed increase (source: Dr. Eric Meijer (sp?) who gave a speech recently at UIUC and worked on C#). In fact, several aspects of the C# language would make it almost impossible to compile (they would take huge run time inefficiencis without a JIT or interpreter to do it for them- perhaps an additional 20%) With an edge like that, C++ will remian viable for years to come. The only thing that will ever knock it out is another native code language.
Fifth- C# gives no real advantages over C++ or Java. It has some extra syntactic sugar, but no true extra power.
Personally, I think that languages ought to concentrate on developing one per methodology. Java takes care of OOP. C++ or C would do well for procedural. Lisp, Scheme, or ML for functional (I dislike functionals myself, but they have uses and would probably be easier to implement since they rely on an interpreter anyway). x86 for masochists? :) jk I like asm, but it would never work in competition.
Comments, disagreements, other types of languages I left out?