Agent ảnh hưởng thế nào đến Rust và ngược lại
Sự trỗi dậy của các tác tử AI (agent) đang thay đổi cách viết mã, và Rust nổi lên như một lựa chọn lý tưởng nhờ hiệu năng mặc định tốt cùng hệ thống kiểu chặt chẽ. Bài viết phân tích ba trụ cột của một "nhà máy phần mềm" dùng agent — thiết kế, xây dựng và tối ưu — đồng thời đề xuất định hướng phát triển cho Rust trong kỷ nguyên lập trình có AI hỗ trợ.

Sự bùng nổ của các mô hình ngôn ngữ lớn (LLM) đang khiến giới thiết kế ngôn ngữ lập trình phải đặt lại câu hỏi về vai trò của con người. Liệu kỹ năng lập trình còn quan trọng? Liệu thiết kế ngôn ngữ có còn ý nghĩa? Và đặc biệt, liệu Rust có phải là lựa chọn tốt cho kỷ nguyên phát triển phần mềm dựa trên agent?
Minh họa về agentic dev và Rust
Bối cảnh: lập trình đã thay đổi ra sao
Tác giả bài viết gốc — một người làm nghề thiết kế ngôn ngữ lập trình — thừa nhận có những lúc cảm thấy lo lắng thực sự trước sự trỗi dậy của LLM. Ông bắt đầu viết mã từ năm lớp 5 trên một chiếc máy x86 chạy 5MHz, ổ cứng vài MB và RAM 512K. Máy tính khi đó rất khác, nhưng bản chất việc lập trình thì gần như không đổi suốt nhiều thập kỷ — cho đến vài năm gần đây, khi mọi thứ đảo lộn.
Điều đó vừa thú vị, vừa đáng sợ. Nhưng kết luận của tác giả khá rõ ràng: con người vẫn còn vai trò trong lập trình, và thiết kế ngôn ngữ lập trình vẫn còn liên quan. Đặc biệt, Rust được đánh giá là một lựa chọn rất phù hợp cho phát triển dựa trên agent.
Rust đang thịnh hành trong kỷ nguyên agent
Rust hiện đang rất phổ biến. Theo chia sẻ từ một kỹ sư của Meta, chỉ trong một năm qua, các kỹ sư công ty này đã viết lượng mã Rust nội bộ gấp đôi so với tổng 9 năm trước đó cộng lại.
Một phần lý do là vì agent giúp việc thử nghiệm ngôn ngữ mới trở nên dễ dàng. Nhưng lý do sâu xa hơn: Rust tình cờ lại rất hợp với lập trình có agent hỗ trợ, nhờ hiệu năng tốt và hệ thống kiểu chặt chẽ.
Ba trụ cột của một "nhà máy phần mềm"
Theo tác giả, một "nhà máy phần mềm" hiệu quả sẽ gồm ba trụ cột:
- Thiết kế: xác định rõ mã cần làm gì.
- Xây dựng: viết mã đáp ứng đúng yêu cầu.
- Tối ưu hóa: làm cho mã chạy hiệu quả.
Cả ba trụ cột đều chưa được giải quyết trọn vẹn, nhưng một số đã tiến xa hơn những cái khác.
Rust và tối ưu hóa: nhanh mặc định, tinh chỉnh khi cần
Rust được thiết kế để cho hiệu năng tốt mặc định — cách viết idiomatic thường cũng là cách chạy nhanh nhất. Nhưng điểm mạnh khác của Rust là bạn có đầy đủ "núm vặn" để tinh chỉnh khi cần: kiểm soát cấp phát stack hay heap, vị trí gián tiếp con trỏ, cách bố trí struct, hay thậm chí cả inline assembly.
Điều thú vị là agent rất giỏi trong việc tinh chỉnh hiệu năng mã có sẵn. Những người từng viết assembly bằng tay cho thuật toán mã hóa hiệu năng cao nay đã chuyển sang dùng agent. Nhiều kỹ sư xây dựng dịch vụ mạng cũng dùng profiler như dial9 để agent chẩn đoán các vấn đề bất đồng bộ như long poll hay blocking.
Sơ đồ vòng lặp tối ưu hóa
Vòng lặp phản hồi hiệu quả trở thành: mã → benchmark → profile → agent phân tích → đề xuất PR → cải thiện mã.
Độ tin cậy là vua
Điều khiến người ta gắn bó với Rust không chỉ là hiệu năng, mà là cảm giác "dùng Rust thì mọi thứ dường như chạy đúng hơn". Lý thuyết cơ bản: hệ thống kiểu và các rào chắn của Rust giúp agent đi đúng hướng.
"rust is a perfect language for agents, given that if it compiles it's ~correct" — Greg Brockman
Các ngôn ngữ như Rust, OCaml hay Haskell đều chia sẻ cảm giác "nếu biên dịch được thì chạy được", và agent hưởng lợi từ điều đó.
Kiểm thử là chưa đủ, hệ thống kiểu giúp ích
"Testing can show the presence of bugs, but not their absence." — Edsger W. Dijkstra, 1970
Với agent, việc viết test càng không bao giờ đủ để chứng minh chương trình đúng. Rất thường xuyên, vài test đầu tiên có vẻ ổn nhưng test tiếp theo lại "nổ tung" một cách khó hiểu. Đây chính là lúc hệ thống kiểu phát huy tác dụng — đặc biệt là hệ thống kiểu mạnh như của Rust.
Nhưng hệ thống kiểu cũng chưa đủ
Hệ thống kiểu có thể chỉ ra sự vắng mặt của lỗi, nhưng không chỉ ra sự hiện diện của tính đúng đắn. Muốn đi xa hơn, cần đến các hệ thống chứng minh (proof system) như Verus, Creusot, Aeneas hay Kani.
Chứng minh không chỉ giúp mã đúng mà còn giúp mã nhanh hơn. Các thuật toán mã hóa có định nghĩa toán học rõ ràng, nên bạn có thể nói với agent: "cứ làm bất cứ điều gì, miễn là chứng minh được kết quả vẫn đúng". Với Rust, một ví dụ điển hình là mã unsafe: nếu chứng minh được nó thực sự an toàn, bạn có thể tự do tối ưu.
Định hướng cho Rust trong kỷ nguyên agent
Agent hoàn thành công việc
Tác giả đề xuất một số định hướng phát triển cho Rust:
- Nếu biên dịch được thì chạy được — làm hệ thống kiểu biểu cảm và hữu dụng hơn để agent không bị mắc kẹt.
- Ngôi sao Bắc Đẩu: không còn mã unsafe không an toàn — hỗ trợ chứng minh để các thư viện Rust phổ biến được chứng minh là sound.
- Đủ thấp để viết kernel, đủ cao để làm GUI — vẫn phơi bày các núm tinh chỉnh hiệu năng, nhưng làm rõ ý định của mã.
- Có thể mở rộng và đa dụng — đưa tinh thần mở rộng (macro, DSL, đa mục tiêu) vào chính trình biên dịch, tích hợp cả các công cụ chứng minh.
Kết luận
Từ góc nhìn thiết kế ngôn ngữ, tác giả cho rằng bước đột phá lớn nhất sẽ đến từ các ngôn ngữ thiết kế (design language), cho phép con người đặc tả kiến trúc và hành vi mong muốn ở mức trừu tượng cao. Từ đó, agent sẽ dịch thiết kế thành mã Rust, còn con người chỉ cần nhìn vào một cách thưa thớt.
Điều này không làm cho việc thiết kế ngôn ngữ truyền thống kém thú vị đi — mà ngược lại, nó khiến các đánh đổi trở nên khác biệt hẳn so với trước đây.


