On Wednesday, 30 January 2013 at 09:01:53 UTC, Paulo Pinto wrote:
On Tuesday, 29 January 2013 at 21:26:11 UTC, Walter Bright
wrote:
On 1/29/2013 1:15 PM, David Nadlinger wrote:
On Tuesday, 29 January 2013 at 19:21:34 UTC, Walter Bright
wrote:
One real issue is order of evaluation bugs, but I didn't see
a note about that
in the Clang list.
Why would you need runtime checking for that?
I didn't say you did!
Besides the AddressSanatizer and MemorySanatizer features
which are obviously
real-world oriented (cf. Valgrind), I also find quite a few
of the ubsan
features to be actually useful in practice - integer overflow
detection is only
a small part of it.
valgrind is immensely useful for C, but a lot less so for D as
D guarantees initialization and a GC takes care of much of the
rest.
Many have jokes about Java being a language that requires an
IDE to be usable.
Usually I joke that C is a language for tool vendors. How many
vendors can take their business to C undefined behaviors and
pointer abuse.
No one on their senses does use C today without an endless list
of tools that validate their code is not going to explode.
--
Paulo
My wishlist for a real revision of C would be:
- removes anachronisms like those discussed in this thread,
- add slightly better safety in the use of const (like in C++),
- add C++ style referencess,
- and finally add alternative to includes and the preprocessor by
the use of modules.
And nothing more.
Oh, and provide a better/safer standard library:
- add {sz, char *} strings to null terminated strings,
- add standard structures like vectors, linked list, hashmap, etc,
- add abstractions for multithreading
Such a revised C could be backward compatible with standard C
(with the restriction of said anachronisms) and show exactly the
same performance characteristics, while being much more clean.
AFAIK, there exists at least one attempt at a compiler which
replaces includes by modules.