One of the languages I neglected to mention in a previous entry was C#, the new offering from Microsoft and a big part of the .NET framework that is apparently to be the foundation of everything they do from now on. I didn’t really know very much about it at the time and, well, I still don’t, but I have to figure out if it’s worth the research.
Despite the initial suspicion you might have about anything coming from MS, C# sounds great — an object-oriented language with a large standard library that covers the most common requirements, that integrates easily into other object oriented frameworks and is platform-independent via a virtual machine and JIT compiling and… Oh wait. I think I’ve heard this story before.
On the surface C# really does seem like Java 2.0. There’s nothing really ‘wrong’ with the language, but its existence seems a bit redundant. Microsoft got slapped around by Sun when they tried to fiddle with Java, so they went off and made their own clone of it. Still, choice is good, and I’m sure there are numerous little subtleties where you can argue that one is better than the other, but I’m not an OOP expert so they’re largely lost on me.
What’s going to be important to me are two things: 1) Am I going to *have* to know it, and 2) Can I even use it? The first point is simply business; if five years down the road it’s going to be hard to find a job *without* ‘C#’ on the resume, then it’s probably worth knowing. The same could have been said about Java and it didn’t really turn out that way, but Microsoft is pushing hard on C# and .NET and they’re the proverbial 900-pound gorilla…
The second point is a bit more important. Currently, despite the promises of portability, the only real implementation of the framework and compiler is on, well, Microsoft OSes. There is an open source implementation in progress for other systems, called Mono, but it’s still in the early stages. For MacOS X there’s an environment from Microsoft themselves, but it doesn’t look well-supported (I can’t even get it to build). Certainly anything new has its growing pains, but at the moment, if I were forced to choose for an important project, Java certainly has a more mature development environment.
So, for the moment, I’m still fairly undecided on whether learning C# would be worth it. It seems unnecessary, with Java already out there, but it might be the next ‘wave of the future’ in professional circles. This doesn’t really affect me work-wise at the moment since we’re still heavily focused on C for portability and reliability (I imagine C# support for MVS mainframes is still a ways off…), but I still don’t want to feel like I’m falling behind. Looks like it’s wait-and-see for the moment…