One of the most frustrating things about null is that it has so many possible meanings:
- We don’t plan to provide a value here, so use a default instead
- We plan to provide a value, but memory for this value hasn’t been allocated yet
- The memory has been allocated, but we haven’t attempted to compute/retrieve the proper value yet
- We are in the process of computing/retrieving the value
- There was a code-level problem computing/retrieving the value
- We successfully got the value, and the value is “the abstract concept of nothingness”
- or the value is “please use the default”
- or the value is “please try again”
And so on. “Null” probably has more different meanings based on context than the word “fuck”.
There have been some attempts at semantic diffs, but it’s very uhh… difficult to gain traction with such a thing.