On 22.11.2017 05:55, codephantom wrote:
... >> The question isn't whether we should use the type system to prevent
bugs. The question is which set of problems really make sense to
prevent with the type system.
No, the question should be, what can the compiler prove to be
true/false, correct/incorrect about your code, and what effort have you
made in your code to assist the compiler to make that determination.
If you've made no effort to provide the compiler with the context it
needs to make a useful determination, then don't complain when the
compiler gets it wrong. That is my first point.
My second point, is that it is already possible to provide such context
to the compiler, without having to make reference types non nullable,
and therefore having to introduce a new nullable reference type.
...
It's really not.
Which make more sense? Knowing that a reference type could potentially
be null, and therefore check for null,
You are saying this as if there was always a reasonable thing to do if
the reference is in fact null. This is just not the case. I.e. this
option sometimes makes no sense. Also, if checking for null is always
required, why wouldn't the compiler complain if it is missing?
or dealing with all the flow on
conquences of making a reference type non nullable by default?
Even with such a change, the Goldbach Conjecture still cannot be resolved.
If the correctness of a program depends on the Goldbach Conjecture,
that's still something one might want to know about. We could then just
add the correctness of the Goldbach conjecture as an assumption, and
then verify that under the given assumption, the program is actually
correct. Once the Goldbach conjecture gets resolved, we can get rid of
the assumption.