Walter Bright wrote:
Denis Koroskin wrote:
> On Sat, 26 Sep 2009 22:30:58 +0400, Walter Bright
> <newshou...@digitalmars.com> wrote:
>> D has borrowed ideas from many different languages. The trick is to
>> take the good stuff and avoid their mistakes <g>.
>
> How about this one:
>
http://sadekdrobi.com/2008/12/22/null-references-the-billion-dollar-mistake/
>
>
> :)
I think he's wrong.
Getting rid of null references is like solving the problem of dead
canaries in the coal mines by replacing them with stuffed toys.
Let's go back a step. The problem being addressed is this: inadvertent
null references are an EXTREMELY common bug in D. For example, it's a
bug which *every* C++ refugee gets hit by. I have experienced it
ridiculously often in D.
*** The problem of null references is an order of magnitude worse in D
than in C++, because classes in D use reference semantics. ***
Eliminating that category of bug at compile time would have a huge
benefit for code quality. "Non-nullable references by default" is just a
proposed solution. Maybe if D had better flow analysis, the demand for
non-nullable references wouldn't be so great.
(Neither is a pure subset of the other, flow analysis works for all
variables, non-nullable references catches more complex logic errors.
But there is a very significant overlap).
Interestingly, while working on CTFE, I noticed that the CTFE code has a
lot in common with flow analysis. I can easily imagine the same code
being reused.