Actual use. Maybe I'm not looking in the right places, but I
don't see any large scale applications being developed in
Objective-C. It's use seems to be limited to small "apps" for
one particular system.
So do you feel, then, that C++'s primary domain is large-scale development and
that is the litmus test upon which to judge competitive-with-C++ness? If not,
what other criteria is relevant, in your opinion?
You say "actual use", but in the short term, a new language is going to be
behind because of the existing base of C/C++ code and developers. I think a more
strategic approach to thinking about it is necessary. That is, one should be
capable of assessing the viability of a language offering given what it is
feature-wise and how use of a particular language can be exploited going forward
(aka, "forward-thinking"). By "feature-wise", I don't mean just thinks like "has
move constructors", but also things like "is simple and elegant".
The fields I know best are network management and investment
banking. In both cases, the engines which actually do the work
are written almost exclusively in C++.
Not insignificant is that your "position" (for lack of a better word that I
can't think of right now) seems to lay down the criteria where C++ CAN compete:
big budget software, where it can be afforded. There's no doubt about it, C++
development is expensive. That is an "attack surface": a major, major problem
inherent of C++, in that it is expensive to use. This may be somewhat offset by
the availability of libraries, but largely not so because C++ is not amenable to
mixing libraries from multiple developers. Integration of libraries may be more
expensive than reinventing the wheel, and many accomplished developers do
exactly that, but it is definitely not for the faint of heart either. Hence
another major problem.
I don't think C++ can change enough to keep it "good enough". At some point the
gas-guzzler will be a museum piece rather than a daily driver. Cadillac
Escalade? What if people (finally) "get a clue" and figure out that driving all
over the place like little ants is a waste of time and money and is dangerous
(not only accidents, but snipers!)? (I digress).
C++ is superior
for large, stable applications which need to be maintained over
time.
Superior to inferior existing languages, you mean, and not the languages under
development currently (and perhaps I'm just starting on it today
) and yet to
find success. (I'm not agreeing with you). YOU can say that, but you have many
years of C++ use and knowledge, etc. YOU, though, are too expensive, and you
know it. A better language would be one that makes you obsolete (I mean the two
or three or more decade learning curve). Yes, YOU can create and maintain those
very complex systems, some (perhaps much) of the complexity arising from the use
of C++, but YOU and others like you are a small group. That is a problem
awaiting solution. Agree?
Now that we have threading, modules and garbage collection are
the two things missing in the language itself.
Can C++ even have "modules"? Doesn't that make it something else? Heck, add GC
and don't you then have D? It's one thing to say C++ will still be here for many
years, but isn't that like the George Washington ax?
Which is
surprising if you realize that both were present and working in
Modula 3, 15 or more years ago. It's not as if the solutions
aren't known.
Having separate headers and implementation files were not considered by Bjarne
to be a worthwhile improvement apparently or there maybe was not enough budget
or maybe C++ is Bjarne's quick-hack gone awry, who knows (Bjarne knows! Time for
another book Bjarne!). I wonder what kinds of major faux paus I will make that
won't be readily seen until looking back historically. Bjarne has a valid excuse
(backward compatibility), I on the other hand, do not have such a crutch, for I
am starting with a clean slate--the design space is wide open. (I promise not to
name my language "the james kanze eliminator"
. Remember, you said you'd use
it! Then again, you'll be retired by then. ).