On Saturday, February 01, 2014 10:58:12 Andrei Alexandrescu wrote: > On 1/31/14, 5:39 PM, Jonathan M Davis wrote: > > Regardless, we're not adding anything with regards to non-nullable > > references to the language itself [...] > > I think the sea is changing here. I've collected hard data that reveals > null pointer dereference is a top problem for at least certain important > categories of applications. Upon discussing that data with Walter, it > became clear that no amount of belief to the contrary, personal > anecdote, or rhetoric can stand against the data.
I'm not sure how I feel about that, particularly since I haven't seen such data myself. My natural reaction when people complain about null pointer problems is that they're sloppy programmers (which isn't necessarily fair, but that's my natural reaction). I pretty much never have problems with null pointers and have never understood why so many people complain about them. Maybe I'm just more organized in how I deal with null than many folks are. I'm not against having non-nullable pointers/references so long as we still have the nullable ones, and a lot of people (or at least a number of very vocal people) want them, but I'm not particularly enthusiastic about the idea either. > It also became clear that a library solution would improve things but > cannot compete with a language solution. The latter can do local > flow-sensitive inference and require notations only for function > signatures. Consider: > > class Widget { ... } > > void fun() > { > // assume fetchWidget() may return null > Widget w = fetchWidget(); > if (w) > { > ... here w is automatically inferred as non-null ... > } > } Yeah, I think that it's always been clear that a library solution would be inferior to language one. It's just that we could get a large portion of the benefits with a library solution without having to make any language changes. It essentially comes down to a question of whether the additional benefits of having non-nullable references in the language are worth the additional costs that that incurs. > Bottom line: a language change for non-null references is on the table. > It will be an important focus of 2014. Well, I guess that I'll just have to wait and see what gets proposed. - Jonathan M Davis