1 คะแนน โดย GN⁺ 2023-10-17 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • บทความที่โต้แย้งว่า 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 ความคิดเห็น

 
GN⁺ 2023-10-17
ความคิดเห็นจาก Hacker News
  • บทความอ้างว่า C ไม่ใช่ภาษาระดับต่ำ เพราะมีการจัดการหน่วยความจำด้วยตนเองและมีการเรียกใช้ตัวจัดสรรหน่วยความจำอย่างชัดเจน
  • ผู้แสดงความคิดเห็นบางคนโต้แย้งว่า สำหรับคนที่เข้าใจและใช้งานอย่างเชี่ยวชาญ C ก็คือภาษาระดับต่ำอย่างแท้จริง
  • มีความเห็นต่างต่อข้ออ้างของผู้เขียนที่ว่าชุดคำสั่งของ CPU ควรเปิดเผยการทำงานภายในของ CPU มากกว่านี้ โดยยกตัวอย่างความพยายามในอดีตที่ล้มเหลว
  • แนวคิดเรื่องระดับต่ำถึงระดับสูงดูเป็นสเปกตรัม และ C อยู่ค่อนข้างฝั่งล่างในบรรดาภาษาที่เปิดเผย primitive ของเครื่อง เช่น การจัดการหน่วยความจำและเธรด
  • ข้ออ้างในบทความที่ว่าการเขียนโปรแกรมแบบขนานไม่ใช่เรื่องยาก ถูกมองว่าอาจทำให้เข้าใจผิดสำหรับผู้แสดงความคิดเห็นบางคน
  • ข้อสมมติในบทความที่ว่าคอมพิวเตอร์ไม่ได้มีโครงสร้างคล้าย PDP-11 ดูจะถูกต้องกว่าที่เคย แต่ข้อสรุปที่ชวนให้จินตนาการถึงโปรเซสเซอร์ที่ไม่ใช่ C กลับดูไม่หนักแน่นนัก
  • ผู้แสดงความคิดเห็นบางคนเห็นว่าข้ออ้างในบทความที่ว่าคอมพิวเตอร์ไม่ใช่ PDP-11 ที่เร็วขึ้นนั้นถูกต้อง แต่การบอกว่าสิ่งนี้เกี่ยวข้องกับ C นั้นเป็นการเชื่อมโยงที่ผิด
  • ข้ออ้างในบทความที่ว่า C ไม่ใช่ภาษาระดับต่ำ เพราะมี struct padding และ signed overflow เป็น undefined behavior ดูเป็นประเด็นที่สร้างสรรค์
  • ข้ออ้างที่ว่าอิทธิพลครอบงำของ C ทำให้นักออกแบบ CPU ต้องสร้างสิ่งที่สามารถรัน C ได้โดยธรรมชาติ ฟังดูมีเหตุผล แต่ก็ยังไม่ชัดว่าเกี่ยวข้องกับข้ออ้างแรกและชื่อบทความอย่างไร
  • หากเทคนิคอันซับซ้อนของ CPU สมัยใหม่ทำให้ C ไม่เป็นภาษา “ระดับต่ำ” อีกต่อไป เหตุผลเดียวกันนี้ก็ใช้ได้กับภาษาแอสเซมบลีเช่นกัน
  • บทความนี้ทำให้ผู้แสดงความคิดเห็นบางคนนึกถึง VLIW ซึ่งคำสั่ง VLIW หนึ่งคำสั่งสามารถบรรจุคำสั่งอิสระหลายคำสั่งที่รันแบบขนานได้