References in D

deadalnix deadalnix at gmail.com
Mon Sep 17 12:47:04 PDT 2012


Le 17/09/2012 13:07, Jonathan M Davis a écrit :
> On Monday, September 17, 2012 13:00:15 deadalnix wrote:
>> Don't take this wrong, I do know that this is a major breakage, and
>> would arm the language if applied in any short term manner. Still,
>> acknowledging error that have been made is usefull.
>
> Not everyone agrees that an error _was_ made. There's a big difference between
> acknoweldging that non-nullable references could be useful and agreeing that
> having nullable references be the default was a bad idea. I very much that it
> will _ever_ happen that non-nullable references would be the default
> (certainly, it will _not_ happen in D2), even if they were added.
>
> - Jonathan M Davis

Having written a lot of Java code and reviewed even more, I can assure 
you that code written correctly in regard of null is the exception 
rather than the rule.

Plus, all null checks tends to add a runtime cost, and most reference 
will never be null anyway (expect in case of an attack, an invalid use 
of an API, unexpected situation, etc . . .).

The cases where you really want null to be a valid value are the 
exception rather than the rule. And most of the code is written like if 
references couldn't be null.

I saw many Java software explode because of NullPointerException, and it 
was sometime really hard to debug (when race condition get into play for 
instance, as I did in Apache Cayenne).

D have already made a step in a direction similar to non nullable 
references with other types initialization. float initialize to NaN and 
char to invalid codepoints. In other terms poison values. It is useful, 
because it avoid to implement the control flow required to ensure that a 
variable is initialized, but not what you are advocating here (you don't 
seem to consider null as a poison value).

To implement non nullable, whatever the way, such control flow must be 
implemented. And it put the question of default initializer back on the 
table as it open for more advanced way of handling the problem.


More information about the Digitalmars-d mailing list