Tập 08: Visible cost

Trong lập trình hệ thống, thứ đắt đỏ nhất thường không phải là phép toán hiển thị rõ ràng trên màn hình, mà là những hành vi ẩn khuất bên dưới mà ta không hề nhìn thấy.

Một hàm có thể mang một cái tên rất hiền lành, nhưng bên dưới lại âm thầm cấp phát bộ nhớ trên heap, khóa một mutex toàn cục, đọc ghi file trên đĩa cứng hoặc thực hiện gọi API qua mạng. Ở tầng lập trình ứng dụng thông thường, sự trừu tượng hóa che giấu chi phí ấy thường rất đáng giá. Nhưng ở tầng nhân hệ điều hành, hệ thống nhúng, hệ thống thời gian thực (realtime) hoặc một đường dẫn nóng (hot path) của engine, nó có thể là ranh giới giữa một hệ thống chạy mượt mà và một tối thứ Sáu cứu hộ sự cố kéo dài vô tận.

DUY kiên quyết đưa những chi phí vận hành quan trọng ấy vào chữ ký kiểu và effect:

fn load_config(path: str) -> Result[Config, IOError]
  effect io, alloc

Chữ ký này không cho biết hàm sẽ tiêu tốn chính xác bao nhiêu nano giây của CPU. Nó làm một việc hữu ích và thực tế hơn nhiều: công bố công khai loại hành vi mà lời gọi hàm này có thể gây ra. Từ khóa io cảnh báo chương trình sẽ bước ra ngoài thế giới tính toán thuần túy để chạm vào thiết bị vật lý. Từ khóa alloc cảnh báo một vùng bộ nhớ động mới có thể sẽ xuất hiện. Sau này, mut (thay đổi trạng thái), unsafe (vùng nguy hiểm), thread (đa luồng) hay panic (gây sập) cũng sẽ có những câu chuyện tường minh tương tự khi ngôn ngữ trưởng thành hơn.

Visible cost không có nghĩa là mọi dòng code đều phải đeo một bảng giá chi tiết. Chi phí thực thi cụ thể vẫn cần đến profiler và benchmark để đo đạc. Hệ thống effect chỉ tạo ra một bản đồ tĩnh (static map) để kiến trúc sư, người duyệt mã (reviewer), compiler và AI cùng nhìn rõ các ranh giới hành vi nhạy cảm.

Lợi ích lớn nhất của việc này là khả năng nói "không" từ sớm. Một hàm được cam kết thuần khiết (pure function) không được phép lén lút thực hiện I/O. Một cấu hình chạy độc lập (freestanding profile) không thể vô tình kéo theo runtime cấp phát bộ nhớ động của hệ điều hành.

Khi chi phí hiện hình, việc thiết kế API trở thành một cuộc thương lượng trung thực và đáng tin cậy hơn.


Bình luận (0)

Đang tải bình luận...