<DISCLAIMER>This is not a flame or an argument for the sake of arguing!
I know that sometimes my posts come off that way, so I'd like to clear
it up now.</DISCLAIMER>
Kevin Spencer wrote: [snip]
Third, the .Net platform, like any other software, was developed to
fulfill certain requirements. It fulfills them beautifully. Among
these requirements are cross-platform compatibilty, cross-language
compatibility, better avoidance of memory leaks in complex
applications, and productivity.
It depends on who you ask. I think Microsoft's requirements for what it
wanted .NET to do has changed considerably over the last 5 years (in
fact I *know* so). I guess it fills your requirements, and that is fine.
However, it would be nice if Microsoft would make public what their
requirements are. They won't.
You *know* so? How? What information sources do you have that we do
not? Can you please post them so we can be equally as informed? Thanks.
Don't get me wrong. I'm fairly certain myself that their requirements
for it have evolved (but perhaps not *changed* altogether). But I
wouldn't tell anyone that I *knew* something without being able to back
it up with facts.
Nope. .NET is not cross platform and Microsoft have never claimed it to
be.
I'm sorry, but I have to disagree with that point. The shared source
CLI (available at
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndotnet/html/faq111700.asp)
compiles and runs on Windows and FreeBSD.
From the referenced Microsoft page:
The Microsoft® Shared Source CLI Implementation is a file archive
containing working source code for the ECMA-334 (C#) and ECMA-335
(Common Language Infrastructure, or CLI) standards. These standards
together represent a substantial subset of what is available in the
Microsoft .NET Framework. In addition to the CLI implementation and the
C# compiler, the Shared Source CLI Implementation contains a cornucopia
of tools, utilities, additional Framework classes, and samples. It will
build and run on the Microsoft Windows® XP and the FreeBSD operating
systems.
According to WikiPedia:
FreeBSD is a free, open source, Unix-like operating system descended
from AT&T UNIX via the Berkeley Software Distribution (BSD) branch
through 386BSD and 4.4BSD. It runs on processors compatible with the
Intel x86 family, as well as on the DEC Alpha, the UltraSPARC
processors by Sun Microsystems, the Itanium (IA-64) and AMD64
processors. It also runs on the PC-98 architecture. Support for the
ARM, MIPS and PowerPC architectures are in development.
Sounds fairly cross-platform to me. But that may depend on what you
mean by PLATFORM. To me, it means a different CPU or operating system.
Again, it's that whole issue of getting two geeks to agree on what a
word means.
<CONJECTURE>
Despite its small share of the desktop computer market, Microsoft has
continued to dump lots of money into the development of software for
Apple computers (which are (1) now running Unix [the core of OSX] and
(2) soon coming to Intel chips). It would be far more economical for
Microsoft to be able to write one codebase for Office and deploy it to
both operating systems without having to recompile.
Just something to think about.
So what? This does not mean that it is cross platform - it is not the
official .NET product. The official Microsoft .NET product is not cross
platform.
Oh, now that's just splitting hairs.
.NET is a platform, not a set
of binaries. Further, it is an open standard, and you can obtain the
source from Microsoft itself.
Now brace yourselves for this: .NET itself is not Microsoft .NET.
Microsoft .NET is Microsoft's implementation of the .NET standard (the
CLI and the BCL). It is conceivable that one day there will be Apple
..NET, Google .NET, and so forth, each providing an implementation of
the .NET standard that differs internally from Microsoft's
implementation. While that's conjecture at this point, you *can*, in
fact look at Mono for a perfect example of it. Microsoft .NET is
Microsoft's implementation of the .NET standard; Mono is an open-source
implementation of .NET for several different operating systems and
CPUs.
So on the one hand, you're right. Microsoft .NET isn't platform
independent. But .NET itself is. It helps to keep them separate.
Try and run an assembly written for the desktop on a PDA with
the .NET compact Framework and you'll see that is the case.
Trying not to laugh out loud at this one.
Let's be realistic. You can't POSSIBLY expect to design an application
for a desktop whose minimum display size these days is 800x600 and
expect them to run on PDAs. Further, look at all the equipment you can
connect to a desktop that can't be connected to a PDA. And no one in
their right mind would constrain the design of a desktop application to
the constraints of a PDA application. That's not even CLOSE to being
realistic.
However, let's think about that. You still wrote the application in
..NET. You compiled it with the same tools. You used a set of classes
from specific namespaces, but who wouldn't? If every platform used the
same namespace and classes for its UI and functionality, you'd be right
back to the least common denominator scenario that generated those
hideous, terrifying, sluggish, loathesome interfaces common to Java
during the pre-Swing era. You can count me out on that one.
<sigh> you've not been following the conversation. The problem is that
the .NET heap is memory hungry and the GC nmechanism is processor
hungry.
Can you back that up with facts? Links? Statistical data? Under which
particular circumstances is it processor hungry?
I thought we had previously beat this to death and determined that it's
overally pretty darned sophisticated, and only gets processor hungry
when you do things with the specific intent of breaking it. (Someone
correct me if I'm wrong there.)
Yup, I agree. But bear in mind that VB6 was also easier to use than C++
;-)
Yup, I agree too.