dereferencing null
foobar
foo at bar.com
Tue Mar 6 07:15:55 PST 2012
On Tuesday, 6 March 2012 at 09:11:07 UTC, James Miller wrote:
> If you have a possible null, then check for it *yourself*
> sometimes
> you know its null, sometimes you don't have any control.
> However, the
> compiler has no way of knowing that. Its basically an
> all-or-nothing
> thing with the compiler.
>
> However, the compiler can (and I think does) warn of possible
> null-related errors. It doesn't fail, because, again, it can't
> be
> certain of what is an error and what is not. And it can't know,
> since
> that is the Halting Problem.
>
> I'm not sure what the fuss is here, we cannot demand that every
> little
> convenience be packed into D, at some point we need to face
> facts that
> we are still programming, and sometimes things go wrong. The
> best
> arguments I've seen so far is to install a handler that catches
> the
> SEGFAULT in linux, and does whatever SEH stuff it does in
> windows and
> print a stacktrace. If this happens in a long-running process,
> then,
> to be blunt, tough. Unless you're telling me that the only way
> to
> reproduce the bug is to run the program for the same amount of
> time in
> near-identical conditions, then sir, you fail at being a
> detective.
>
> If you have a specific need for extreme safety and no sharp
> corners,
> use Java, or some other VM language, PHP comes to mind as well.
> If you
> want a systems programming language that is geared for
> performance,
> with modern convenience then stick around, do I have the
> language for
> you! Stop thinking in hypotheticals, because no language can
> cover
> every situation; "What if this is running in a space ship for
> 12 years
> and the segfault is caused by space bees?!" is not something we
> should
> be thinking about. If a process fails, then it fails, you try to
> figure out what happened (you do have logging on this mysterious
> program right?" then fix it.
>
> Its not easy, but if it was easy, we'd be out of jobs.
>
> </rant>
>
> --
> James Miller
The only halting problem I see here is trying to find any logic
in the above misplaced rant.
The compiler can implement non-nullable types and prevent NPE
bugs with zero run-time cost by employing the type system. This
is a simple concept that has nothing to do with VMs and
implementations for it do exist in other languages.
Even the inventor of the pointer concept himself confesses that
null-ability was a grave mistake. [I forgot his name but the i'm
sure Google can find the video]
I really wish that people would stop comparing everything to
c/c++. Both are ancient pieces of obsolete technology and the
trade-offs they provide are irrelevant today. This is why we use
new languages such as D.
More information about the Digitalmars-d
mailing list