Here's a subject that's attracted my attention recently, through a combination of being brought up in another thread and one of my friends studying it next term. Basically, what does C# try to do, and how well does it succeed in that aim? I've heard that it's intended to provide more abstraction away from the mungy details of the hardware, and as such was referred to by Microsoft employees as "I Can't Believe It's Not Java". Has anyone had much experience with C#? If it looks interesting enough, I might dig out my copy of Visual Studio .NET (courtesy of my department having a deal with Microsoft) and take a look at it.