kcw | journal | 2000 << Previous Page | Next Page >>

So, Microsoft has this new language called C# (see-sharp) that is this wonderful and revolutionary language that will run on every platform and be truly write once run everywhere. Not that I've looked at the specification at all, but only have read some interviews and articles and lots of comments. Still, I want to make a few comments.

First off, C# as a language is not that complicated to say, C++. It's definitely derived from the C languages, extended to make the object orientedness cleaner and more robust and pervasive. A lot of people are comparing it to Java since it is a direct competitor. What I find funny on reading an interview with the lead designer for C# is all the things they included that Java left out. I don't know what you think, but extra choices don't necessarily make something better. It seems like you can do all these cool things that Java doesn't do, and like any good stout rope it'll break your neck cleanly when properly used. From the looks of it it seems that C# gives you too much, and this from a team of four people who created this language.

Another component of C#, and probably more important, is Microsoft's .NET platform. Like the Java Foundation Classes, Microsoft Foundation Classes, Apple Toolbox, this is a large package of tools and objects and services for .NET developers to use. But there is also supposed to be some extra stuff so that any language can use the .NET platform, whether the language is COBOL or C# (Java is strangely never mentioned).

As people have realized in the last decade, language is not as important as the libraries that you use to write your programs. People don't want to write their own window drawing routines, or their own quicksort implementation. It's much easier to use someone else's well-tested (in theory) code. And it's doubly good if those libraries that you use are automatically available and installed on all the machines that will run your software.

Although C# and .NET have been submitted to a standards body (ECMA) I'm trying to imagine how Microsoft will subvert it to maintain it's dominance. Actually, I'm not too sure if .NET has been submitted to ECMA, the interview I read mentions a "common language infrastructure" which could mean a lot of things. But even if these Microsoft products become standardized and therefore out of Microsoft's control, I don't think it'll do anything.

Think about two things. Microsoft generated C# and .NET, so they are already way ahead than any other implementers. .NET will be quite hard to port to any other platform -- if you don't port COM and ActiveX and all the other Microsoft things, .NET ports aren't going to be useful as they won't run most of the programs written for the platform. So Microsoft maintains leadership and still retains it's large developer base.

Point 2, what happens when Microsoft comes out with .NET version 2? Sure it wasn't put out by ECMA, but Microsoft, in the interest to "further enable developers to use the latest innovations now rather than wait for ECMA to add all these new things to the standard" will release .NETv2 and will also submit it as the next version of the .NET standard to ECMA. Microsoft developers are happy, other .NET implementers are playing catchup, and Microsoft is setting the pace by introducing it's own innovations (and one thing Microsoft can do, is take something and "innovate" it to Tartarus).

From what I read, C# and .NET is the same thing that Microsoft does all the time. Sure, COM is cross-platform. Sure, ActiveX is cross-platform. The point is not that .NET is cross-platform, the point is that it was designed to work best on Windows and it leverages their voluminous developments along those lines. Nobody is going to be able to implement it any better on any non-Windows platform. So if everyone writes .NET software, Windows machines will run it best (certainly a good thing for Windows sales).

In the end it just seems to be an attempt by Microsoft to beat Java. By being more "open" and more "advanced" they hope to keep the Windows developers they have and convert some Java developers (and legacy developers) to a platform that they will defacto control.

Copyright (c) 2000 Kevin C. Wong
Page Created: August 18, 2004
Page Last Updated: August 18, 2004