- Bài viết lập luận rằng, trái với niềm tin phổ biến, C không phải là một ngôn ngữ cấp thấp
- Tác giả David Chisnall cho rằng các lỗ hổng Meltdown và Spectre xuất phát từ khả năng của bộ xử lý trong việc thực thi lệnh vượt qua kiểm tra truy cập, và tính năng này được thêm vào để khiến các lập trình viên C tin rằng họ đang lập trình bằng một ngôn ngữ cấp thấp.
- Chisnall lập luận rằng việc một ngôn ngữ "gần với kim loại" có nghĩa là nó phải cung cấp một máy trừu tượng có thể dễ dàng ánh xạ tới các trừu tượng do nền tảng đích phơi bày, và ông cho rằng điều này không đúng với C.
- Tác giả cho rằng nguyên nhân gốc rễ của các lỗ hổng Spectre và Meltdown là do các kiến trúc sư bộ xử lý cố tạo ra những bộ xử lý nhanh phơi bày các máy trừu tượng như PDP-11, từ đó khiến các lập trình viên C tiếp tục tin rằng ngôn ngữ của họ gần với phần cứng nền tảng.
- Chisnall cho rằng để chạy mã C nhanh cần đến các phép biến đổi biên dịch phức tạp và hàng nghìn năm-người để tạo ra những trình biên dịch đủ thông minh.
- Tác giả đề xuất rằng thuộc tính cốt lõi của một ngôn ngữ cấp thấp là lập trình viên phải có thể dễ dàng hiểu cách máy trừu tượng của ngôn ngữ được ánh xạ tới cỗ máy vật lý bên dưới, và ông cho rằng điều này không đúng với C.
- Chisnall kết luận rằng có lẽ đã đến lúc ngừng cố làm cho mã C chạy nhanh hơn và thay vào đó suy nghĩ về việc mô hình lập trình nên trông như thế nào trên các bộ xử lý nhanh. Ông gợi ý rằng các bộ xử lý được thiết kế thuần túy vì tốc độ có thể sẽ hỗ trợ số lượng lớn luồng, có các đơn vị vector rộng và một mô hình bộ nhớ đơn giản hơn nhiều.
1 bình luận
Ý kiến Hacker News
structvà việc signed overflow là hành vi không được định nghĩa, có vẻ mang tính xây dựng.