โทนีฮอร์ที่สร้างความคิดของการอ้างอิงโมฆะในสถานที่แรกที่เรียกว่าความผิดพลาดหนึ่งล้านดอลลาร์
ปัญหาไม่ได้เกี่ยวกับการอ้างอิงที่เป็นโมฆะต่อการค้นหา แต่เกี่ยวกับการขาดการตรวจสอบประเภทที่เหมาะสมในภาษาที่ปลอดภัย (ส่วนใหญ่) ประเภทการพิมพ์
การขาดการสนับสนุนจากภาษานี้หมายความว่าบั๊ก "บั๊ก - โมฆะ" อาจแฝงตัวอยู่ในโปรแกรมเป็นเวลานานก่อนที่จะถูกตรวจจับ นั่นคือลักษณะของข้อบกพร่องแน่นอน แต่ "โมฆะบั๊ก" เป็นที่รู้กันว่าสามารถหลีกเลี่ยงได้
ปัญหานี้มีอยู่โดยเฉพาะอย่างยิ่งใน C หรือ C ++ (ตัวอย่าง) เนื่องจากข้อผิดพลาด "ยาก" ที่ทำให้เกิด (ความผิดพลาดของโปรแกรมทันทีโดยไม่มีการกู้คืนที่สวยงาม)
ในภาษาอื่นมีคำถามเกี่ยวกับวิธีจัดการกับมันเสมอ
ใน Java หรือ C # คุณจะได้รับข้อยกเว้นหากคุณพยายามเรียกใช้เมธอดในการอ้างอิงแบบ null และอาจไม่เป็นไร ดังนั้นโปรแกรมเมอร์ Java หรือ C # ส่วนใหญ่จึงคุ้นเคยกับสิ่งนี้และไม่เข้าใจว่าทำไมจึงต้องการทำอย่างอื่น (และหัวเราะที่ C ++)
ใน Haskell คุณต้องดำเนินการอย่างชัดเจนสำหรับคดีโมฆะดังนั้นโปรแกรมเมอร์ของ Haskell จึงรู้สึกผิดหวังที่เพื่อนร่วมงานของพวกเขาเพราะพวกเขาทำให้ถูกต้อง (ใช่ไหม)
จริงๆแล้วมันคือการถกเถียงข้อผิดพลาดรหัส / ข้อยกเว้นเก่า แต่คราวนี้ด้วยSentinel Valueแทนข้อผิดพลาดรหัส
แล้วแต่ความเหมาะสมที่สุดขึ้นอยู่กับสถานการณ์และความหมายที่คุณกำลังมองหา