Null references (oh no, not again!)

Denis Koroskin 2korden at gmail.com
Tue Mar 3 12:08:25 PST 2009


On Tue, 03 Mar 2009 21:59:16 +0300, Andrei Alexandrescu <SeeWebsiteForEmail at erdani.org> wrote:

> Daniel Keep wrote:
>> Just noticed this hit Slashdot, and thought I might repost the abstract
>> here.
>>   
>> http://qconlondon.com/london-2009/presentation/Null+References:+The+Billion+Dollar+Mistake
>>
>>> I call it my billion-dollar mistake. It was the invention of the null
>>> reference in 1965. [...] This has led to innumerable errors,
>>> vulnerabilities, and system crashes, which have probably caused a
>>> billion dollars of pain and damage in the last forty years. [...] More
>>> recent programming languages like Spec# have introduced declarations
>>> for non-null references. This is the solution, which I rejected in
>>> 1965.
>>    -- Sir Charles Hoare, Inventor of QuickSort, Turing Award Winner
>
> I suggested to Walter an idea he quite took to: offering the ability of  
> disabling the default constructor. This is because at root any null  
> pointer was a pointer created with its default constructor. The feature  
> has some interesting subtleties to it but is nothing out of the ordinary  
> and the code must be written anyway for typechecking invariant  
> constructors.
>
> That, together with the up-and-coming alias this feature, will allow the  
> creation of the "perfect" NonNull!(T) type constructor (along with many  
> other cool things). I empathize with those who think non-null should be  
> the default, but probably that won't fly with Walter.
>
>
> Andrei

If nullable is the default and NonNull!(T) has no syntactic sugar, I bet it won't be used at all. I know I woudn't, even though I'm one of the biggest advocates of introducing non-nullable types in D.

In my opinion, you should teach novices safe practices first, and dangerous tricks last. Not vice-versa.

If using of nullable types would be easier that non-nullable once, it won't be widely used. The syntax ought to be less verbose and more clear to get an attention.

I hope that this great idea won't get spoiled by broken implementation...




More information about the Digitalmars-d mailing list