3 ms·
C# is a decent language to use, and has evolved rather rapidly over the last few years. I remember in the 1.0 (and even PDC days) when C# came out as essential
by torial 16y ago
C# is a decent language to use, and has evolved rather rapidly over the last few years. I remember in the 1.0 (and even PDC days) when C# came out as essentially a Java clone, and to find out about how to use classes I'd find the most help from Java documentation! Now it is a different beast, and has become more usable, and lots of the changes have made it more useful and faster programming.
Since 2.0 VB.Net has started falling behind, for example not getting the "yield" convenience that C# got. So on the MS provided languages, C# is continously getting better than VB.Net, and you'll hear even less advocacy for VB.Net!
That said, the .Net framework can be used with more interesting languages (my preferred one is a python-like language called Cobra: www.cobra-language.com) and the primary loss in the equation is the Visual Studio environment (although MS is making it easier to write language extensions in 2010 version). So you can use an excellent framework with many other languages.
So then what you are left with is the language itself. I can't speak for others, but the script-like syntaxes speak to my brain more naturally than C-like languages, and I have found that I am most effective in thinking in a language like python than I am with either VB.Net or C#.
Part of the appeal that python/ruby have is they typically come with the non-Windows OS a person might use. For instance Python comes out of the box with OS X and most *nix OSes.
You are right on the abstracting what you've learned. It is true for a general language family, and less so (but still helpful) when you cross families. By that, if you stay in the procedural/OO realm of languages, you'll notice lots of similarities, but if you branch out into functional languages it will be very different.