"Làm lại từ đầu" là một cụm từ quyến rũ nhưng đầy cạm bẫy. Nó thường được thốt ra ngay trước khi một đội ngũ kỹ sư dành mười tám tháng tiếp theo để tái tạo lại chính xác các lỗi mà hệ thống cũ đã mất nhiều năm để sửa đổi.
Vì vậy, "làm lại" trong DUY không có nghĩa là phủ nhận sáu mươi năm nghiên cứu compiler của nhân loại. Nó chỉ đơn giản là thay đổi điểm xuất phát.
Nếu thiết kế một ngôn ngữ hệ thống hôm nay, tôi sẽ không coi trình biên dịch chỉ là một công cụ dịch chữ thành lệnh máy. Trình biên dịch phải là nơi tập trung những cam kết của ngôn ngữ: kiểm tra kiểu dữ liệu, theo dõi quyền sở hữu, kiểm soát hiệu ứng phụ (effects), dựng ranh giới an toàn và xác minh biểu diễn trung gian (IR).
Tôi muốn bề mặt chương trình đủ trong sáng để một người mới không phải học một nghi lễ ký hiệu phức tạp trước khi diễn đạt ý tưởng. Nhưng sự đơn giản ấy không được mua bằng cách giấu nhẹm đi chi phí vận hành. Một lời gọi có I/O phải để lộ I/O. Một hàm cấp phát bộ nhớ phải cho người đọc biết nó có cấp phát. Một đoạn chạm trực tiếp vào bộ nhớ thô phải bước qua ranh giới unsafe có gắn biển cảnh báo rõ ràng.
Tư tưởng ấy dần co lại thành một đường ống xử lý (pipeline):
Ý định của con người
-> Ngữ nghĩa được kiểm tra chặt chẽ
-> Quyền sở hữu và hiệu ứng phụ hiện rõ
-> Biểu diễn trung gian (Typed IR) được xác minh
-> Mã máy native có hành vi hoàn toàn dự đoán được
AI có mặt trong đề bài mới này, nhưng không được ngồi ghế thẩm phán tối cao. Mô hình ngôn ngữ lớn (LLM) rất giỏi đề xuất mã, viết ca kiểm thử (test fixtures) và giải thích lỗi. Nhưng nó cũng cực kỳ giỏi trong việc khẳng định một điều sai trái bằng một giọng điệu tự tin đến mức khiến ta muốn ký biên bản nghiệm thu ngay lập tức. Vì thế, DUY phải được thiết kế sao cho AI có thể cộng tác sâu ở đầu vào, nhưng compiler và hệ thống test tự động nắm quyền phủ quyết tuyệt đối ở đầu ra.
Đề bài mới không phải là tạo ra "ngôn ngữ dễ nhất", "ngôn ngữ nhanh nhất" hay "ngôn ngữ an toàn nhất". Những chữ "nhất" thường là cách làm marketing tiết kiệm nhất nhưng lại là cái bẫy kỹ thuật đắt đỏ nhất. Đề bài của DUY là một tổ hợp cân bằng:
Dễ học trong trường hợp phổ biến
+ Nghiêm khắc ở lõi ngữ nghĩa (semantics)
+ Không dùng bộ thu gom rác (GC) mặc định
+ Chi phí vận hành quan trọng phải tường minh
+ Sinh mã máy native hiệu năng cao
+ Đủ cấu trúc để con người và AI cùng làm việc
Một đề bài như vậy cần một cái tên. Tôi chọn cái tên gần gũi nhất mà mình có.
Bình luận (0)
Đang tải bình luận...