Hi Nick,
In my opinion, you are not correct in your assertion.
In my opinion, C++ is much _less_ powerful that C# with the .Net framework.
I'm not sure I follow.
C++ can do everything .NET can do and a lot more besides. Maybe
"powerful" is the wrong thing to argue about? You can't really say "C#"
in the above line, because it basically means "managed code" and that
limits it just as much as VB.NET or any other "plug-in" language. (as
pointed out by "C.E.O Gargantua" below).
There's probably plenty "plus" points of .NET you could cite, but I
don't think "powerful" is one of them...
C++ is more portable (for now), but also more expensive to use. The code is
considerably more difficult to read and understand, making maintenance costs
much higher. Libraries are needed to perform fairly basic things, and the
libraries are not available cross-platform in many cases.
I hear what you're saying here, but personally I'm not convinced. The
current reality is that C++ is far more portable and has fewer
dependencies, not only across platforms, but even across Windows itself!
In terms of being difficult to read, I agree, but outside the realm of
students and beginners, the maintenance factor is a small price to pay
for not being tied to an ever-changing series of incompatible
frameworks. I'm glad I didn't invest in WinForms or Microsoft's "web
controls" for example.
The code runs fast in C++, but the adding support for web services or third
party controls is expensive... and adoption is slow.
But people are fed up with all these silly "controls"! That's why
so-called "ActiveX" was such as disaster in Internet Explorer and
Outlook Express. The idea was that people would want pop-up UI elements
bouncing out of every email, but all it did was cause a slew of security
headaches and gradually they had to be turned off, and now everyone is
grabbing Mozilla and FireFox so they can can SAFE plain-text email and
pop-up free browsing.
Regarding the "web" and "web services", it's very simple. You have HTTP,
HTML, XML and various CGI/ISAPI interfaces. Everything else is just
marketing hype from people trying to make it sound complicated. You
certainly don't need .NET to run web services.
I do agree that ASP and ASP.NET are good for web applications and web
scripting, but Microsoft's direction is now moving away from open web
standards and that means .NET will become less attractive. It's already
much more difficult than it should be to leverage x-browser DHTML in
Microsoft's .NET products, whereas it's very easy in ASP, PHP or PERL.
This is where you end up fighting with the framework; in ASP you can add
a few lines of JavaScript/css and it's done in five minutes; with .NET
you have to learn the ins and outs of an oddball "web server control"
and are tied to what it can (and can't) do. We also see Microsoft's HTA
technology (which supports open standards) moving towards XAML which
does not - another step backwards in the realm of Enterprise computing,
but pretty cool if you want to view your sales figures in a spinning 3d
cube.
C# code is very fast
as well, since it is compiled to the machine level by the framework.
Yes, but what about the FrameWork objects themselves? How many of them
are just wrappers around COM objects?
C++ hasn't gone away, and it shouldn't (just yet). So many interfaces were
design for C++ that many new bits of code that have to talk to those
interfaces still should be written in C++.
OK.
Those interfaces include device
drivers. However, if the OS has fundamental support for interfaces in .Net,
there is no reason that a device driver cannot be written in C#.
I think the word "if" is the important one here! Is this going to be
ready for Longhorn?
I've heard this argument before... in 1992, when I was working at IBM on
OS/2.
I've read all that, but this is way of the topic we were talking about.
I agree about OS/2 in the realm of desktop computers, but I don't see
what this has to do with C++ vs .NET?
I was there. Microsoft made the right choice then,
I agree.
and they made it again
with .Net. New stuff should filter in, but old stuff has to keep running.
Well I'm not so sure. Why does so much of the MSDN documentation now say
that it's "archived content"?
Oh, and to your own point, the Local Security Authority (LSA) is managed by
the LSASS service. This model is a left over from NT4. Windows server 2003
leverages the Active Directory, as does XP.
We're currently running Win2000, but as far as I know XP still uses the
LSA in the context of "Local Security Policy"? I can check this next
week. But let's assume it does NOT use the LSA for a moment.
Let's say you want to add a new Anti-Virus service account to all
workstations in the OFFICE4 OU - "User Rights Assignment". You can't use
AD and GPO, because doing so would delete all rights of the local
WSxx\ASPNET service accounts, so you have to add the account to the list
of user-rights on the actual machines. Can this be done with .NET, or
can you even list the existing ones with .NET?
I notice you avoided the question about writing a video capture (or
video editing) application with .NET - will this be ready for Longhorn?
from hacking. Perhaps the problem is really that your enterprise has
decided not to keep up with best practices in security, and you are taking
that out on Microsoft's technology.
To date we have an excellent record on security and I'm not taking
anything out on Microsoft's technology - just discussing pros/cons of
C++ and .NET (as per the subject line).