I really avoid joining in on this type of discussions but this time I'd do it ...
Ayne, with regards for "better", tools are made for a specific job, and comparing two different tool pieces without telling "for what you wanna use them" is as evandude said comparing english and german (or to be more true, english and chineese as those are used by ~ same amount of ppl).
Anyhow, the actual answer to your question is - LEAR HOW TO PROGRAMM. it is really unimportant what language you choose. There is number of programming models like linear (assembler), procedural (pascal, c), object (c++, c#)... and many others. If you are planning to do desktop app's - object oriented model is what you need. If you are going to use C++ or C# or any other OO language - it is completely unimportant as when you learn the model, and when you learn to think like software developer, the syntax is the only difference between all the choices given to you, and syntax is something one learns in 2-3 days, so it is really not the time consuming part of "learning how to be software developer".
If you are windoze centric person, .NOT is the best starting point as there is number of ".not for morons" guides available on the internet (do not get offended by the "morons" word, I too read "moron handbook" when I learn new stuff - those are usually best books around)... of course of all .not syntaxes the C# is imho best but that's just because I like that syntax better then some other .not syntaxes (like vb for example), not because c# will do anything better/faster then any other .not compiler.
If you are not glued to windoze then some more open approach for the starting point is better so c++ or java would be my suggestion, with more points to java as there is more "java for morons" resources available for free then "c++ for morons".
I hope you understand the difference between native code and interpretted code / virtual machine code. The C++ will for example make native code for you system giving the maximum performance and wider possibilities (more direct control of the hw for example) and on the other hand c# or java will create virtual code that will be run in virtual machine. This is much slower, uses more resources and does not allow direct control over the hw, but offer some nice tools for "lousy programmers" like garbage collectors, system protection etc. The lack of hardware control is solved by special interfaces that allow you to run piece of code written in c/c++ so you can access serial port or usb port from c# or java.
All in all, choose "any" object oriented programming language and when you understand the OO model and logic behind it, switching to another language will be really a piece of cake. I use actively over 20 languages and used this way or another 40-50 other ones... and that's not counting different versions of single language (C++ is C++ disregarding if it is gcc or vc or bc or ...)
3v0, .not is fully designed and implemented by microsnot and microsnot's dev team, the concept, the run time engine / virtual machine ... The reference to Borland is because person who designed / invented Delphi is the person who was hired by microsnot to design C#. So only C# syntax/gui/compiler is designed by the
Anders Hejlsberg, not the .not concept.
Mono is .not virtual machine for unix. You can run (most of) .not application compiled on widows with any widows compiler (vb, c#, java.net, delphi.net ...)... mono comes with c# compiler too iirc but .....
p.s. I apologize widows fan's for .not == .net and microsnot == m$ == microsoft .. but I'm really not widnoze person