Edward Diener said:
LINQ and XAML has nothing to do with C# and everything to do with .Net. It
does not make sense, therefore, to say that the C++/CLI team was always
playing catch up with C#. It might make sense that they needed to
implement things in C++/CLI which was being added to .Net, but so did the
C# team. I do not call that playing catchup. It is only laziness on the
part of the VC++ team.
There is NO difference between the C# team adding features to the C#
language to accomodate new .Net features, if that is what they felt was
the way to support .Net, and the C++/CLI team adding features to C++/CLI
to accomodate new .Net features, if that is what they felt was the way to
support .Net. C++/CLI is not C+, it is Microsoft's own extension purely to
accomodate .Net, and they can change the language at will to acoomodate
new .Net features as they like. Both C# and C++/CLI are under ECMA, so any
excuse that they can add new features to C# but not to C++/CLI is purely
illusory.
I'm not an expert in language parsing, but it is generally acknowledged that
C# is easier to parse than C++ is. I would think that due to the native C++
parsing requirements that C++/CLI needs to support, any extensions to
accomodate LINQ and partial classes might be more difficult than the
equivalent changes in C#. In addition, the codebase for the C++ compiler is
very old and changes take longer. When it takes several years to revamp the
front end to support a better Intellisense (in Orcas+1), you get the idea
(again, just speculation) that things in the C++ team don't move very fast.
Furthermore the C++/CLI team actually has the advantage over C# in that
they can use some of the greater facilities of their language, which is
based on C++, to add new features for .Net programming. The most obvious
advantage is templates in C++, but they also showed their mettle in adding
much better destructor syntax.
Yes, and that is really nice, but not in itself a reason to use C++ for new
..NET apps.
This is purely your opinion or do you have firsthand knowledge of this ?
Just speculation, although based on what I hear as a Visual C++ MVP and
further verified by public Channel 9 videos. You certainly can't argue that
native C++ users weren't getting their needs met, hence the immenent
Orcas-but-a-little-late release of TR1.
If the VC++ team is not talented enough or numerous enough to work on both
the native C++ front and the .Net front, Microsoft should either hire more
programmers for the VC++ team or get better people who want to make C++ a
first class native programming language and C++/CLI a first class .Net
programming language. The jokers they have now are a disgrace, not because
they are not talented but because they have completely let down the
C++/CLI programmers.
Yes, I've also said this for some time. We both know that Microsoft has
enough resources to do this, so why don't they? I think the answer is
obvious: the payoff isn't there! Like it or not, there aren't enough
people like you who are interested in using C++/CLI as a first class .NET
language. I was once with you that I didn't want to use C#. But now I
don't want to use C++/CLI....
C# has a momentum for .NET apps that C++/CLI will never have (even if it
retained it's title as a first class .NET language). It had that title for
2 years and went nowhere with it. I am heavily investing in learning WPF
now, and that community is very, very C# oriented. It's easier to fit in.
Besides, the tools for C# are way better than for C++ (Resharper, etc.).
And a C# program is more readable than a C++/CLI program without all those
'^'.
I have no idea why you think the '"new" role of C++/CLI to extend existing
C++ apps is a wise one'. I am either going to write a native C++
application, or I am going to write a .Net application.
When C++/CLI was created it was touted as a way for C++ programmers to
write .Net applications and modules. Stan Lippmand and Herb Sutter did an
excellent job, vis-a-vis C++, of creating the language.
Well, they tried that, and like I said, C++/CLI as a pure .NET language
really didn't go very far in the marketplace (present company not
withstanding). Microsoft Bob also did not get very far, and I don't think
we cried much when they cancelled that (despite the fact that Melinda Gates
was a PM on that project). It's a business, after all. And I speculate
(only speculation) that Microsoft saw only two types of programmers wanting
C++/CLI: 1) native C++ programmers looking to use a familiar friend with
new .NET apps, and 2) native C++ programmers looking to extend legacy apps.
Since C# was designed to be easy for C++ programmers to learn, MS is not
going to lose much money by not supporting #1. #2 happens to have some very
large corporate accounts (including MS's own Windows team and other product
teams), so it makes sense to support them, which they are with C++/CLI in
its new role as a way of extending native apps to make use of .NET.
As I said, I once was one of C++/CLI's staunchest supporters. But really,
C++/CLI only makes sense if your basis is in C++ and you are looking to
extend into .NET. Otherwise, your basis is C# and you want to stay in .NET.
There are plenty of programmers coming into the workforce which know C# a
whole lot better than C++, and that trend is going to accelerate, just like
there aren't that many new programmers who know much 80x86 assembly
language. Microsoft isn't going to invest much money in keeping legacy
programmers since by definition, it's a shrinking market.
Now I find that all that hype about programming .Net with C++/CLI was a
baldfaced lie and Microsoft never had any attention of allowing C++
programmers to use the C++/CLI to write .Net applications and modules in
the same manner that C# programmers could.
I think one camp in Microsoft was very serious about it 2 years ago, but it
didn't work out. Life goes on.
When you say that you, as a C++ programmer, use C# rather C++/CLI to
program .Net you have done exactly as Microsoft wanted from the start,
which is to convert C++ programmers to C#. Congratulations ! I am sure you
are an excellent programmer but you are also a case study in how well
Microsoft has succeeded. I am not saying that C# is not a fine language in
its own way. I am just saying that thousands of C++ programmers were
fooled into believing that C++/CLI would have all of the ability and VS
support for .Net programming as C# does, and now it is evident that was
just all a come on, and there was little truth in it.
You make it sound like I drank Microsoft cool aid or something. That isn't
true. I am a consultant, and a businessman. I made a business decision to
develop in C#, because it is more productive and money saving due to the
better tools and third party support, and the learning curve was easily
accomodated. If I made Microsoft happy by doing that, I can think of worst
people to make happy. Microsoft has been good to me over the years. I've
made a lot of money (heck, 100% of my money) over my career on their
technologies, and they have always treated me well. It's not a sin to make
Microsoft happy, I don't know where you are going with that. I'm certainly
not going to boycott C# because they did an experiment with C++/CLI and due
to how that experiment turned out now want to go in a different direction
with it.
-- David