การกำหนดมาตรฐาน C++26 อาจถูกชะลอออกไปในนาทีสุดท้าย เนื่องมาจากข้อพิพาทเกี่ยวกับคุณสมบัติ Contracts ซึ่งถูกออกแบบมาเพื่อเสริมความปลอดภัยของภาษา
การลงคะแนนในฉบับร่างมาตรฐานนานาชาติ (DIS) ของ C++26 ในเดือนตุลาคมไม่ผ่านการอนุมัติ เนื่องจากมีเสียงคัดค้าน 9 เสียง ในขณะที่มีเสียงเห็นชอบ 13 เสียง และเสียงงดออกเสียง 12 เสียง ซึ่งไม่เป็นไปตามข้อกำหนดของ ISO ที่ต้องมีเสียงคัดค้านไม่เกิน 25 เปอร์เซ็นต์
ข้อพิพาท Contracts
Stroustrup และคณะระบุว่า Contracts และส่วนขยาย P2900 มีเป้าหมายเพื่อเปลี่ยนแปลงธรรมชาติของ C++ และถือเป็นภัยคุกคามต่อการมีอยู่ของ C++ เอง เนื่องจากเพิ่มความซับซ้อนและความใหญ่โตให้กับภาษา
Andreas Fertig มองว่าคำวิจารณ์เหล่านี้ได้รับการพิจารณาแล้ว และการยับยั้งข้อเสนอในขั้นตอนนี้ถือเป็นอันตรายต่อ C++ เอง ซึ่งปัญหาหลักคือการที่นักพัฒนาสามารถสร้างช่องโหว่ด้านความปลอดภัยใน C++ ได้โดยไม่ตั้งใจ ทำให้หลายโครงการหันไปใช้ Rust แทน
ผู้ที่ไม่พอใจ
Harry Bott CEO ของ C++ Alliance ซึ่งดูแลส่วนหน้าของ compiler C++ แบบ open source EDG มองว่าการอภิปรายเรื่อง Contracts ไม่ได้เป็นสิ่งที่ทำลาย C++ เอง
ทางเลือกต่อไป
การประชุมของกลุ่มทำงาน ISO C++ WG21 ในเมือง Búzios ประเทศบราซิล ในสัปดาห์หน้า จะเป็นการเผชิญหน้าครั้งสุดท้าย และกลุ่มต้องตัดสินใจว่าจะเดินหน้าต่อไปอย่างไร
หากมีการเผยแพร่ในปีหน้า ชื่ออย่างเป็นทางการของภาษาฉบับที่แปดนี้คือ “ISO/IEC 14882:2027”
ศัพท์ที่ควรรู้
- C++26 – คือฉบับร่างมาตรฐานของภาษาโปรแกรม C++ ที่กำลังอยู่ระหว่างการกำหนดมาตรฐาน
- Contracts – เป็นคุณสมบัติที่ถูกเสนอเพื่อเพิ่มความสามารถในการรับรองความถูกต้องและความปลอดภัยของโค้ด
- ISO – คือองค์กรระหว่างประเทศที่กำหนดมาตรฐานทางเทคนิคต่างๆ รวมถึงมาตรฐานของ C++ ด้วย
- DIS – คือ Draft International Standard ซึ่งเป็นขั้นตอนก่อนการอนุมัติมาตรฐานอย่างเป็นทางการของ ISO
ที่มา: The Register