As someone who uses both (usually C# though). They're basically identical. VB.NET I would say may be easier to pick up without a programming background, C# if you are coming from another language. There are seriously for almost every programmer, only a few very very minor differences between C# and VB.NET (they compile to the same damn language as far as the computer is concerned.) All this one is superior over the other is nonsense. If you pick either, you can easily change to the other with very very little noticeable difference. VB6 is pretty ancient. I wouldn't bother with it. C++ is probably going to be annoyingly difficult to get basic applications done in. It's pretty much used in only very specialised or legacy fields now. The plus with Java, is also the negative with Java. They do a heap of it at Uni's. What this means is that they produce a heap of Java programmers who get the the real world and discover that most of the jobs are in .NET, and most of the graduates are trained in Java. This is a really good thing for those of us who did electives / extra study in .NET There is .NET compilers etc for Linux, but I imagine it's not quite as easy as Microsoft have made it to use the windows IDE and tools. If you're used to doing things the hard way anyway (hey you use Linux), you might as well do Java. Will probably help with any development for mobiles / linux. The brilliance of .NET is once you've learned the language, you can use it for web apps just as easily (or more easily even) than windows applications. The downside is that you're not going to be able to run the same code on non-windows OS mobile phones..