At work recently (as in, yesterday) I was faced with the problem of re-writing a scientific app written in the mid-nineties. This thing was a full-screen DOS sort of app and today what with laptops and their widescreen huge-resolution displays, the program wasn't readable for the average human being. All it does is display text in different colors and take keyboard input.
So I got to pick a language to re-write this app from scratch. My first thought process was "Ruby!", but this app is a multi-threaded, GUI app running on Windows laptops that don't have Ruby installed, which is about the worst possible kind of program to try to write in Ruby, aside from maybe device drivers.
So I considered Java. A brief search reveals that even in present-day Java, you still apparently don't have the ability to easily compile Java programs to a native Windows exe. There are some Java compilers but they seem like hacks and many of them are non-free (as in money). Then I remembered that I've never seen an easy-to-use wysiwyg tool for building Java GUI apps. A google search turned up nothing, and the last version of Eclipse I used didn't let me do it either.
So then I decided oh well, I may as well bite the bullet and try C#. I've never used it before. There's a free version of Visual Studio called Visual Studio Express that you can download. (Note: I remember always wanting such a thing about 10 years ago in high school when I was just learning programming for the first time. Maybe if such a thing had been available for free back then, I would have been indoctrinated into the church of Microcrap early on rather than wandering in Linux. Their loss.)
I don't know what's missing in the free version of Visual Studio compared to the thousand dollar shyster version. The free version has a draggety-drop GUI builder, and it has the standard IDE with the auto-completion etc. It's no Vim, but it's better than anything I've ever tried to use to write Java, certainly. It's also better than writing Java in Vim, because writing Java in anything is pure unadulterated pain.
So far as the language itself, C# is noticeably more pleasant to deal with than Java, while at the same time being a blatant ripoff of it in almost every way. But some of the stupid Java annoyances are gone. For example C# doesn't make you catch every single exception that every single bit of code ever throws, which is a blessing. And it doesn't seem to try to force you to keep your files in certain kinds of directory trees. On the other hand, there are of course incredibly stupid limitations to C# for no reason I can tell. e.g. it doesn't support default parameters and doesn't allow constant arrays.
In any case, having never even seen a line of C# as of yesterday, I was able to almost finish my app in about 2 days with relatively little pain. And it's a native Windows app that can easily be deployed. If I ever find myself forced to write a Windows GUI app again (God help me) I'll probably start off with some form of .NET. If good GUI-builder tools or native-exe-producing compilers exist for Java, they need to be better advertised or something.
So given that it's Windows programming, i.e. automatically worse than almost everything else in existence, C# isn't bad, relatively speaking. I'd still rather be writing Ruby.