Nigel Perry wrote:

> > NGWS
>
> An older temporary name for .NET. NGWS? Never Goes Wonderfully Sucks?
> I think somebody shot the marketing guy and replaced him, she then
> came up with ".NET" :-)

Next Generation Windows Services (I think), as opposed to older generations
such as the Win32 APIs and COM.

> > C# (which I've discovered is intended to be pronounces C-sharp
> >     rather than C-hash)
>
> MS's version of a "better C", "better" is subjective of course ;-)

More of a "better Java", really. I haven't looked at C# in any great detail,
but as a language it does seem to be a bit better than Java from MY
particular subjective viewpoint, aside from its current complete lack of
portability. (Somehow I doubt that Microsoft will actually create, or allow
anyone else to create, a really good Mac or .*n[iu]x version of it. That
would conflict with their desire to have Windows conquer the universe.)

> > the .NET virtual machine
>
> Under .NET compilers compile to IL, this is then JIT'ed and executed.
> "JIT" includes such options as "JIT at install time" (a new defn of
> JIT!). MS are keen to point out that IL code is never interpreted.

Yes, this is nice. Compiling as part of installation is a cool option. Of
course, JIT at runtime is probably preferable when you're downloading web
app(let)s, which I assume the .NET infrastructure is meant to support.

> > COM
>
> I'm too young to know about COM, but I hear it was less than wonderful

COM is/was Common Object Model, a language-independent (though somewhat
C/C++-biased) binary-compatibility standard for object interfaces. Related
terms include OLE (Object Linking and Embedding) and ActiveX, both of which
are particular subclasses/extensions of COM. Working with COM is sort of a
pain, and the extra levels of indirection and data transformations it
requires degrade performance to a noticeable extent. There are tons of COM
objects built into Windows, by the way, which may partially explain why
Windows is such a pig.

> >Why does the world need C# when it already has Java and C++?
>
> Who invented Java & C++?

Good answer, but let's consider the history and purpose of these things a
bit...

C++ was invented (by Stroustrop at Bell Labs) because he wanted to add
objects to C, while retaining near-perfect backward-compatibility at the
source level (i.e., nearly all legal C programs should be legal C++ as well,
aside from conflicts caused by new keywords in C++ that are legal variable
names in C). It has since grown to include exceptions, templates, and other
capabilities that are orthogonal to object-orientation but were considered
good things to have. The resulting language, in some people's opinions (mine
included) is a chaotic mess of conflicting features that is hard to learn
and use.

Java was Gosling's attempt to make a more pure OO language than C++ while
still retaining C-like syntax. He discarded what he considered "mistakes" in
C++, such as multiple inheritance, backward-compatibility with C, and the
"const" keyword; added some mistakes of his own; and neglected to fix a
number of syntactic uglinesses inherited from C, such as the need to put
"break;" at the end of every case in a switch statement. His superiors at
Sun then marketed Java as a revolution in language design, which it was not,
and as a Windows-killer, which it was not. What it was and is, IMHO, is a
mediocre language created with minimal ingenuity and no really new ideas.

C# is Microsoft's attempt at a Java-killer. It isn't really all that
different from Java, but as Nigel says below, its virtual machine is
intended to support more languages than just C#, whereas the JVM was
designed just for Java, and getting other languages to compile to JVM can be
a bit of a struggle. Syntactically, C# seems a bit cleaner than Java, but
the differences don't really add up to much.

> >Why does the world need a .NET virtual machine when it has
> >dozens of Java Virtual Machines?  Don't COM and Corba already
>
> The argument here is that .NET is designed from the ground up to
> support multiple languages, the JVM was not. So languages can
> interwork, share libraries, and even extend each others classes.

And CORBA isn't a Microsoft product, nor is it supported by any Microsoft
product, so Microsoft prefers to ignore it. This is not to say whether CORBA
is good or bad, as I haven't worked with it. I do think, though, that
Microsoft's idea of using a VM-based intermediate language, rather than a
low-level binary compatibility standard such as CORBA or COM, is a better
way of getting different languages to work together.

Craig



Reply via email to