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.
|