การป้องกันตัวชี้ที่เป็นโมฆะ

จากวิกิพีเดีย สารานุกรมเสรี

การป้องกันตัวชี้ที่เป็นโมฆะ (อังกฤษ: 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.

อ้างอิง[แก้]

  1. Syme, Don. "Quote of the Week: "What can C# do that F# cannot?"". สืบค้นเมื่อ 7 September 2018.
  2. "Nullable reference types | Microsoft Docs". สืบค้นเมื่อ 12 March 2021.
  3. Moore, Kevin (2018-08-07). "Announcing Dart 2 Stable and the Dart Web Platform". Dart. สืบค้นเมื่อ 2018-08-08.
  4. "Sound null safety | Dart". สืบค้นเมื่อ 12 March 2021.
  5. "Null safety—Kotlin". สืบค้นเมื่อ 12 March 2021.
  6. "Defining an Enum - The Rust Programming Language". doc.rust-lang.org. สืบค้นเมื่อ 2021-06-26.