- บทความที่โต้แย้งว่า C ไม่ใช่ภาษาระดับต่ำ แม้จะเป็นความเชื่อที่แพร่หลาย
- ผู้เขียน David Chisnall เสนอว่าช่องโหว่ Meltdown และ Spectre เกิดจากความสามารถของโปรเซสเซอร์ที่รันคำสั่งโดยข้ามการตรวจสอบการเข้าถึง และความสามารถนี้ถูกเพิ่มเข้ามาเพื่อทำให้โปรแกรมเมอร์ C เชื่อว่าตนกำลังเขียนโปรแกรมด้วยภาษาระดับต่ำ
- Chisnall โต้แย้งว่าการที่ภาษาหนึ่ง "ใกล้กับโลหะ" หมายความว่ามันควรมี abstract machine ที่แมปเข้ากับ abstraction ที่แพลตฟอร์มเป้าหมายเปิดเผยออกมาได้อย่างง่ายดาย และเขาเห็นว่าสิ่งนี้ไม่เป็นจริงสำหรับ C
- ผู้เขียนเสนอว่าต้นตอที่แท้จริงของช่องโหว่ Spectre และ Meltdown คือสถาปนิกโปรเซสเซอร์พยายามสร้างโปรเซสเซอร์ที่เร็วและเปิดเผย abstract machine แบบเดียวกับ PDP-11 ซึ่งทำให้โปรแกรมเมอร์ C ยังคงเชื่อต่อไปว่าภาษาของตนใกล้กับฮาร์ดแวร์พื้นฐาน
- Chisnall ระบุว่าการทำให้โค้ด C รันได้เร็วต้องอาศัยการแปลงโดยคอมไพเลอร์ที่ซับซ้อนและต้องใช้เวลารวมกันระดับหลายพันคน-ปีเพื่อสร้างคอมไพเลอร์ที่ฉลาดพอ
- ผู้เขียนเสนอว่าคุณสมบัติหลักของภาษาระดับต่ำคือโปรแกรมเมอร์ควรเข้าใจได้ง่ายว่า abstract machine ของภาษานั้นแมปกับ physical machine พื้นฐานอย่างไร และเขาโต้แย้งว่าสิ่งนี้ไม่เป็นจริงสำหรับ C
- Chisnall สรุปว่าอาจถึงเวลาหยุดพยายามทำให้โค้ด C เร็วขึ้น แล้วหันมาคิดแทนว่าโมเดลการเขียนโปรแกรมบนโปรเซสเซอร์ที่รวดเร็วควรมีหน้าตาอย่างไร เขาเสนอว่าโปรเซสเซอร์ที่ออกแบบมาเพื่อความเร็วล้วน ๆ น่าจะรองรับเธรดจำนวนมาก มีเวกเตอร์ยูนิตที่กว้าง และมีโมเดลหน่วยความจำที่เรียบง่ายกว่ามาก
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
signed overflowเป็น undefined behavior ดูเป็นประเด็นที่สร้างสรรค์