Re: The D Programming Language
David Abrahams wrote:
"Andrei Alexandrescu (See Website For Email)"
But in a memory-safe program you don't even need Purify to tell you that
the program did something wrong. A logging module would suffice, and the
proof is in the trace.
a. I don't see how the logging module can do that
b. Anyway, that's often far too late to actually debug the problem.
Am I not getting a joke? Logs are the _best_ way to debug a program.
If the argument is that it leads to messier languages and slower
programs, I'd agree. But IMHO the arguments brought in this thread
didn't carry much weight.
So my answer to "Purify can't tell you..." is "Because you don't
need Purify".
Of course not. That's a cute comeback but misses the point entirely.
In a GC'd system Purify is the wrong tool because there are no invalid
pointers. Instead you need a tool that tells you that something has
been kept alive too long, and nobody's figured out a tool to do that
because it's effectively impossible for a tool to tell what "too long"
is.
Ehm. I thought we were talking about arbitrary memory overwrites. Maybe
I did miss the point entirely.
and that random behaviour including crashes are replaced by
deterministic, often plausible but wrong results.
Of course that can happen in a system with undefined behavior, too.
That said, it looks like a wash to me: incorrect programs have
different characteristics under the two systems but neither one wins
in terms of debuggability.
The memory-safe program wins because it never overwrites arbitrary
memory; so all objects unaffected by a bug respect their invariants.
The same is trivially true of C++: all objects unaffected by a bug
respect their invariants.
This is wrong. A memory bug in C++ can affect any object. You could say,
yeah, all objects unaffected by a bug have no problem. The problem is,
you can't define the set of objects unaffected by a bug :o). Right back
atcha.
Andrei
--
[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]