Bruno van Dooren said:
[I wrote]
What you're really saying is that we need C++ tools that are as
good as the C# ones.
C++ is a powerful tool that can do almost anything you want, very
efficiently. But it is not an easy language to learn.
I'm having difficulty seeing how you think your answer addresses the point I
made.
When I wrote "tools" I didn't mean the language or even the compiler, I meant
things like form designers, refactoring tools, database bindings, code
generators -- all of which exist for C# (and e.g. Java). These tools don't
exist -- or are much more rudimentary -- for C++.
IMV the tools vendors -- in this case Microsoft -- would have done better to
spend their development budget providing good tool support for an existing
language (C++) that inventing a new language that nobody needs.
Mastering C++ to the level of an expert can take many years, and even then
there will be areas that you are probably not proficient with.
'Mastering' the whole of C++ could take a lifetime, but acquiring a
sufficiently good working knowledge of the language to write useful
application code is not so daunting. Sure, there are seldom-explored corners
of the language where Powerful Stuff happens -- but those corners are the
realm of library writers, and ordinary folk need only go there out of
interest, to satisfy curiosity, or to pursue obscure bugs.
I don't agree that C++ is too intimidating for regular application
programmers -- if these people are smart enough that you trust them to write
software for you AT ALL then they will be smart enough to use C++
productively and to benefit from its greater power.
Look at the way C++ is presented in modern introductory works like Koenig &
Moo's /Accelerated C++/ or Francis Glassborow's /You Can Program in C++/. the
language is presented as an immediately accessible, very usable language. The
extensive use of the standard library ensures that power and safety of the
language are exploited, while keeping the code presented to the user simple
and understandable. C++ is NOT a black art.
Good programming requires good programmers. If your programmers aren't good
you won't make them any better by giving them an "easy" language to use.
They'll just be very productive at writing bad code.
I agree that, as things stand, good programmers may be more productive at
some tasks using C# than using C++. That's not a failing of C++, it is (as I
said) a failing of the tool support provided for/with C++ -- the form
designers, refactoring editors, etc.. Those things improve productivity by
taking some of the 'leg-work' out of programming, but they don't make one a
better programmer, or improve the quality of one's code.
As I said: what the industry needs most is high quality productivity tools
for existing languages.
I do not believe in the 'one ring to rule them all' approach.
Different tools are meant for different jobs.
If by "tools" you mean languages I agree: there are specialized languages
that are particularly suited to certain jobs, and they are generally better
for those jobs than general-purpose languages. However C++ and C# are both
general-purpose languages without any particular niche specialization. They
are good for the same things, and I see no reason for anyone to need to use
both -- C++ covers all the bases.
Cheers,
Daniel.