Cha đẻ ngôn ngữ Zig theo đuổi "sự hoàn hảo không thỏa hiệp" trước khi ra mắt phiên bản 1.0

Phần mềm28 tháng 5, 2026·4 phút đọc

Andrew Kelley, người sáng lập ngôn ngữ lập trình Zig, đã chia sẻ lý do ông từ chối sử dụng AI trong phát triển phần mềm và tầm nhìn về một ngôn ngữ lập trình tồn tại trong 50 năm. Ông cũng chỉ trích mô hình lập trình dựa trên đám mây của các công ty lớn là một "đề xuất điên rồ".

Cha đẻ ngôn ngữ Zig theo đuổi "sự hoàn hảo không thỏa hiệp" trước khi ra mắt phiên bản 1.0

Andrew Kelley, người sáng lập và BDFL (Nhà độc tài nhân từ) của ngôn ngữ lập trình Zig, mới đây đã có cuộc phỏng vấn với Vitaly Bragilevsky, trưởng hệ sinh thái Rust tại JetBrains. Zig là một ngôn ngữ lập trình đa mục tiêu nhằm đạt hiệu suất tương đương ngôn ngữ C nhưng với "ít bẫy hơn" (ít gây lỗi cho lập trình viên), theo nhận định của Kelley.

Mặc dù là một ngôn ngữ nhỏ, xếp hạng 82 trong bảng xếp hạng RedMonk, Zig lại rất được yêu thích trong cộng đồng người dùng. Khảo sát của Stack Overflow năm ngoái cho thấy Zig là ngôn ngữ được ngưỡng mộ thứ tư.

Tại sao lại tạo ra Zig?

Kelley giải thích lý do ông tạo ra Zig khi đã có C, C++, Rust và Go. Ban đầu, ông muốn phát triển một trạm làm việc âm thanh kỹ thuật số (digital audio workstation). Ông thử dùng Go nhưng gặp khó khăn trong khả năng tương tác với thư viện C và bộ thu gom rác (garbage collector) gây ra độ trễ âm thanh. Ông thử C++ hoặc viết kiểu C trên trình biên dịch C++, nhưng những sai sót nhỏ dẫn đến lỗi hỏng bộ nhớ mất hàng tuần để sửa. Cuối cùng, ông thử Rust nhưng "vật lộn để viết mã thỏa mãn các quy tắc của Rust" và mất một tháng để xử lý việc hiển thị phông chữ.

Giải pháp của Kelley là đi theo hướng khác và tạo ra một ngôn ngữ mới. Ông khẳng định Zig "không từ bỏ bất kỳ sức mạnh nào mà C mang lại, đồng thời cải thiện các khiếm khuyết và điểm yếu của C".

Quan điểm cứng rắn về AI

Dự án Zig nổi tiếng với chính sách "không dùng AI" được quy định trong quy tắc ứng xử. Kelley cho rằng các đóng góp từ AI "vô cùng rác rưởi" và tốn thời gian xem xét mã (code review) mà đội ngũ cho rằng nên dành cho con người.

Quan điểm của ông về AI khá tinh tế. Một trong những sự phản đối của ông là AI không thể dạy được, trong khi đội ngũ Zig coi trọng việc hướng dẫn những người đóng góp để họ trở nên tốt hơn hoặc thậm chí trở thành thành viên cốt lõi. Một điểm trừ khác của công cụ AI là tính không xác định (non-deterministic), do đó đầu ra của nó luôn cần được xem xét, ngay cả với những việc đơn giản như đổi tên hàm. Kelley ưu tiên các công cụ xác định mà ông có thể tin tưởng hoàn toàn.

Về "vibe coding" – việc ủy thác toàn bộ việc viết mã cho AI – Kelley cho rằng điều này thú vị nhưng ông không muốn sử dụng công nghệ "bị kiểm soát bởi bốn công ty". Ông nói: "Tôi sẽ không chuyển từ việc dùng máy tính và điện của mình sang việc dùng lập trình nguồn đóng trên máy tính của người khác qua mạng, mà lại phải trả tiền hàng tháng. Đối với tôi, đó là một đề xuất điên rồ."

"Tôi luôn nghe mọi người nói rằng mã AI hoạt động tốt một cách đáng ngạc nhiên. Nhưng đối với tôi, đó không phải là tiêu chuẩn tôi muốn đặt ra cho phần mềm. Tiêu chuẩn tôi muốn là sự hoàn hảo không thỏa hiệp."

Sự hoàn hảo và tương lai của Zig 1.0

Thái độ cầu toàn này cũng thể hiện rõ trong tiến độ của Zig. Sau 11 năm, ngôn ngữ này mới chỉ đạt phiên bản 0.16 và các bản phát hành đôi khi có những thay đổi lớn gây phá vỡ tương thích. "Khi chúng tôi gắn thẻ 1.0, nó sẽ là một sản phẩm thực sự của tình yêu không thỏa hiệp," ông nói. Nó cũng sẽ là lời hứa về tính tương thích ngược, trong khi giai đoạn tiền phát hành đội ngũ có thể tiếp tục cải thiện ngôn ngữ mà không bị ràng buộc đó. Mục tiêu là tạo ra một ngôn ngữ cho 50 năm tới.

Rời bỏ GitHub và loại bỏ LLVM

Kelley giải thích việc Zig chuyển khỏi GitHub: "GitHub đơn giản là ngừng hoạt động với chúng tôi. Chúng tôi ở đây để viết phần mềm. Nếu máy chủ tích hợp liên tục (CI) của chúng tôi không hoạt động, chúng tôi cần tìm một cái hoạt động."

Zig đã chuyển sang Codeberg, một tổ chức phi lợi nhuận của Đức. Kelley thích mô hình này vì ông thấy các tổ chức phi lợi nhuận ổn định hơn các startup hay tập đoàn.

Một khía cạnh gây tranh cãi của Zig là quyết định loại bỏ hoàn toàn các thư viện LLVM, Clang và LLD khỏi dự án. Kelley cho rằng bạn muốn tránh sự phụ thuộc cho sản phẩm cốt lõi của mình và việc phụ thuộc vào LLVM là một sai lầm đang được khắc phục.

Cuối cùng, Kelley tiết lộ ông chưa bao giờ sử dụng sản phẩm của JetBrains vì nó là nguồn đóng. Ông sử dụng terminal và Vim để viết mã.

Chia sẻ:FacebookX
Nội dung tổng hợp bằng AI, mang tính tham khảo. Xem bài gốc ↗