Years ago, when I was in college, I decided to pursue a minor in music to offset the insanity of getting a degree in physics. I spent a bit of time learning the key signatures, and how to transpose music written in one key to another, usually simpler, key (since I'm not much of a musician). I'm not sure how many sharps are in the key of C sharp at this point, but I think it had to be one of the more difficult keys to read, if not play.
I've received a good deal of mail and other input regarding Microsoft's new C Sharp specification, including some very interesting comparisons from one reader who outlined the similarities between C Sharp and Java in detail, including keyword counts (with synonyms even). He made his point pretty easily; it's not hard to see that C Sharp looks a great deal like Java.
Now, Microsoft is proclaiming this as the next step in the evolution of the C language. C++ added object-oriented programming to C, although it's still possible to write completely ordinary procedural code with C++. C++ also brought with it the ugly concept of multiple inheritance. Granted there are times when the ability to treat an object as more than one class, depending on need, is important. It's just that the C++ approach is one of the ugliest ways to do it I've ever seen. Add to that the memory management jungle that exists within C/C++ and it's easy to understand why Java appeals to programmers who want to be productive.
C Sharp promises to provide a new path for C. As if we needed another one. It's simple to see that C Sharp is aimed squarely at the Java community. This new language has the same syntax as Java, which is understandable since Java evolved largely out of C/C++. It also removes the concept of multiple inheritance, same as Java. And it does away with memory management and provides garbage collection as well, all similar to Java.
And we all can see where this is going. After years of trying unsuccessfully to co-opt the Java standard due to its overwhelming need to control and dominate, Microsoft has finally acknowledged that it can't break this market. So the egomaniacs in Redmond have decided to create a new language that will look like Java, but not have any ties to the standard.
Like most people, I use Microsoft products every day. I'm writing this in Microsoft Word on a computer that runs Windows NT. I use Internet Explorer. The desktop is still important. I won't rehash the tired arguments about Microsoft domination; I know we all know them. Despite the importance of the desktop, there are clearly other arenas that have evolved around or even in spite of Windows. There's Linux, Internet Appliances, Palm Pilots, Wireless PDAs - the list grows daily. Personal computing has grown to be more than just a PC. And the language that's driving that revolution is Java.
So the entrance of this new language doesn't bother me the way it might have several years ago. Java has a clear edge in the marketplace as the language of the Internet. It runs Web sites everywhere, powering B2C, B2B and other e-commerce applications throughout the world. JSP has truly helped bring Java to the browser, and EJB has standardized the way we write distributed applications.
C Sharp won't change that. About all that it will do is further muddy the story on Java from Microsoft. Fortunately, there are numerous options for Java VMs from other sources. While it would be interesting to see a strong VM from Microsoft, in point of fact it's largely irrelevant. C Sharp signals Microsoft's exit from the Java world, on a sour note. But it means business as usual for those who use Java on Microsoft products.
Sean Rhody is editor-in-chief of Java Developer's Journal. He is also a respected industry expert and a consuitant with a leading Internet service company. He can be contacted at: