Randy said:
xemacs foots two of those bills.
These must be IDE navigation and code completion. Actually, I doubt
that (x)emacs can do a perfect job on those two things and an
imperfect one does not really help: if you rely on code completion
and it does not provide you with appropriate template instantiations
or suppresses them in other contexts, it is somewhat unhelpful at
best. Likewise I doubt that (x) emacs is capable of navigating to
the appropriate [partial] specialization of a template. It surely
provides some help but it does not go all the way.
Going to another language does not implicitly guarantee either of
the other two.
We are in perfect agreement on this. However, a new language gives
the opportunity to add considerations like potential tool support
to the language design guidelines.
Huh? What's wrong with g++? It's certainly fast enough for me.
First of all, g++ is wrong in some cases and it does not support
standard C++. If you disagree, try to use the 'export' keyword.
Considering g++ speed, I think it is reasonable but I would prefer
it to be faster: I tend to run testsuites often and most of my
projects have bigger testsuites which take considerable amounts of
time. Compilation speed of g++ compared to e.g. VC++ is not really
favourable although this shows that C++ can be compiled faster than
what g++ does (but then, with other flows). Essentially, there is
still only one standard conforming C++ implementation: EDG's
front-end and just one compiler (AFAIK) which actually ships it
with the whole feature set (Comeau). However, this compiler is not
exactly fast either. Of course, other compilers (C, Java, C#, etc.)
don't have that much to do (e.g. no templates) but they are much
faster for comparable amounts of code.
If
I cranked out a few dozen lines of code per minute I might start
to think that compile time would be a signficant overhead, but
I don't.
You might think differently if most of your code were in testsuits
which get recompiled with each run.
I don't really even see the problem, so I don't see what needs to
be rectified.
The template mechanism is one of C++'s most powerful features but
it inherently broken: just have a look at all those funny ADL
discussions on comp.lang.c++.moderated or comp.std.c++. Correct
template support is pretty hard to get it right and except for
EDG's front-end nobody has made it (and even EDG's front-end seems
to be imperfect in some corner-cases).
The working title for the next C++ standard: the committee is
working on the next C++ revision and plans to finish it in this
decade. Most likely, the "x" will eventually be replaced by "9".
Why? Because it is hard to get remember all issues even for C++
experts. Which ones? Well, the core language specification (i.e.
C++ without its standard library) takes roughly 250 pages. I'd
consider this to be more than most people can remember and I
actually doubt that there is anybody who does know all the details
without refering back to this document in all situations. This is
clearly too complex.
But don't get me wrong: I surely want to retain C++'s power. I
just want to get rid of all those special rules you need to
remember. It actually starts with the declaration syntax: it is
not really obvious that
| std::vector<int> vec(std::istream_iterator(in),
| std::isteram_iterator());
declares a function rather than defining an object, is it?
Why do we need to simplify the language?
Because it is too complex for both humans and machines!
I'll see you in the marketplace.
I have no trouble with that: I think I'm quite good at writing
C++ and C++ is clearly my preferred language. However, I also
see C++'s limitations and disadvantages, many of which are not
really necessary - once we accept certain changes.