C++, for two reasons.
1) a lot of games are programmed in C++. No mainstream game is, as yet, programmed in a managed language.
2) C++ is as hard as it gets. You have to master manual memory management and generally no bounds checking (beyond the excellent Valgrind!). If you master C++, you will find this transferable to managed procedural languages. Less so the other way around.
C++ has a level of complexity close to APL! You'll never get better by playing weaker opponents.
Joel makes a very strong point about this. People who understand how the machine works make better programmers, because all abstractions are leaky.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…