Tony Hoare, người đã tạo ra ý tưởng về một tài liệu tham khảo null ngay từ đầu, gọi đó là sai lầm một triệu đô la .
Vấn đề không phải là về các tài liệu tham khảo null mỗi lần, mà là về việc thiếu kiểm tra loại thích hợp trong hầu hết các ngôn ngữ an toàn (loại khác).
Sự thiếu hỗ trợ này, từ ngôn ngữ, có nghĩa là các lỗi "null-bug" có thể ẩn trong chương trình trong một thời gian dài trước khi được phát hiện. Đó là bản chất của lỗi, tất nhiên, nhưng "null-bug" hiện được biết là có thể tránh được.
Vấn đề này đặc biệt xuất hiện trong C hoặc C ++ (ví dụ) do lỗi "cứng" mà nó gây ra (sự cố của chương trình, ngay lập tức, không có phục hồi thanh lịch).
Trong các ngôn ngữ khác, luôn có câu hỏi về cách xử lý chúng.
Trong Java hoặc C #, bạn sẽ nhận được một ngoại lệ nếu bạn cố gắng gọi một phương thức trên một tham chiếu null và nó có thể ổn. Và do đó, hầu hết các lập trình viên Java hoặc C # đã quen với điều này và không hiểu tại sao người ta lại muốn làm khác (và cười vào C ++).
Trong Haskell, bạn phải cung cấp một hành động rõ ràng cho trường hợp null và do đó, các lập trình viên Haskell hả hê với các đồng nghiệp của họ, bởi vì họ đã hiểu đúng (phải không?).
Thực sự, đây là cuộc tranh luận về mã lỗi / ngoại lệ cũ, nhưng lần này với Giá trị Sentinel thay cho mã lỗi.
Như mọi khi thích hợp nhất thực sự phụ thuộc vào tình huống và ngữ nghĩa mà bạn đang tìm kiếm.