การป้องกันตัวชี้ที่เป็นโมฆะ
การป้องกันตัวชี้ที่เป็นโมฆะ (อังกฤษ: null safety) หรืออาจเรียกว่าการป้องกันวอยด์ (อังกฤษ: void safety) เป็นคุณสมบัติของภาษาโปรแกรมเชิงวัตถุ ว่าตัวชี้ใดๆ (หรือ reference ไปยังวัตถุใดๆ) จะไม่เป็นตัวชี้ที่เป็นโมฆะ (อาจเรียกว่า void หรือ null) เพราะถ้าหากโปรแกรมพยายามเรียกดูข้อมูลที่อยู่ที่ตัวชี้ (หรือ reference) เหล่านั้น จะสามารถทำให้เกิดเป็นสิ่งผิดปรกติ และ/หรือ ทำให้โปรแกรมล่มได้
การป้องกันตัวชี้ที่เป็นโมฆะคือการรับประกันเวลาคอมไพล์ ว่าจะไม่มีการขอดูข้อมูลที่อยู่ที่ตัวชี้ที่เป็นโมฆะโดยเด็ดขาด
ในภาษาโปรแกรม
[แก้]ความพยายามในช่วงแรกที่จะรับประกันการป้องกันตัวชี้ที่เป็นโมฆะคือการออกแบบ ภาษาSelf
ภาษาไอเฟล มีการป้องกันตัวชี้ที่เป็นโมฆะตามมาตรฐาน ISO - ECMA ของมัน การป้องกันตัวชี้ที่เป็นโมฆะของมันได้ถูกนำมาใช้ใน EiffelStudio โดยเริ่มจาก เวอร์ชัน 6.1 และใช้วากยสัมพันธ์สมัยใหม่ที่ขึ้นต้นด้วย เวอร์ชัน 6.4
ภาษา Spec# ซึ่งเป็นภาษาวิจัยจาก Microsoft Research มีแนวคิดเรื่อง "ชนิดข้อมูลที่ไม่สามารถเป็นโมฆะได้" ซึ่งกล่าวถึงการป้องกันตัวชี้ที่เป็นโมฆะ
ถึงแม้ว่าภาษาบนระบบดอตเน็ตและดอตเน็ตเฟรมเวิร์กมักจะมีการป้องกันตัวชี้ที่เป็นโมฆะ ภาษา F# ได้รับการยกเว้นจากการป้องกันตัวชี้ที่เป็นโมฆะ [1]
ภาษาซีชาร์ปจะตรวจสอบการป้องกันตัวชี้ที่เป็นโมฆะในเวลาคอมไพล์ตั้งแต่เวอร์ชัน 8 อย่างไรก็ตาม เพื่อให้เข้ากันได้กับภาษาเวอร์ชันที่เก่ากว่านั้น ผู้ใช้จะต้องเลือกใช้คุณลักษณะนี้ด้วยตนเอง แบบต่อโปรเจ็กต์หรือต่อไฟล์ [2]
ภาษาดาร์ต ของ Google ตรวจสอบการป้องกันตัวชี้ที่เป็นโมฆะตั้งแต่เวอร์ชัน 2.0 ในเดือนสิงหาคม 2018 [3] [4]
ยังมีภาษาอื่นๆ ที่ใช้"ชนิดข้อมูลที่ไม่สามารถเป็นโมฆะได้"โดยปริยาย เช่น ภาษาคอตลิน (รัสเซีย: Ко́тлин) ของบริษัท JetBrains,[5] ภาษารัสต์,[6] และภาษาสวิฟต์ (อังกฤษ: Swift) ของ Apple.
อ้างอิง
[แก้]- ↑ Syme, Don. "Quote of the Week: "What can C# do that F# cannot?"". สืบค้นเมื่อ 7 September 2018.
- ↑ "Nullable reference types | Microsoft Docs". สืบค้นเมื่อ 12 March 2021.
- ↑ Moore, Kevin (2018-08-07). "Announcing Dart 2 Stable and the Dart Web Platform". Dart. สืบค้นเมื่อ 2018-08-08.
- ↑ "Sound null safety | Dart". สืบค้นเมื่อ 12 March 2021.
- ↑ "Null safety—Kotlin". สืบค้นเมื่อ 12 March 2021.
- ↑ "Defining an Enum - The Rust Programming Language". doc.rust-lang.org. สืบค้นเมื่อ 2021-06-26.