Giới thiệu
Bạn đã bao giờ gặp tình trạng các mô hình ngôn ngữ lớn (LLM) như GPT-4 hay Claude tạo ra những đoạn code rườm rà, thiếu logic hoặc khó kiểm soát chưa? NanoLang ra đời để giải quyết vấn đề đó. Đây là một ngôn ngữ lập trình thực nghiệm siêu nhỏ, được thiết kế đặc biệt để trở thành "đích đến" cho các AI code generation.
Hiện tại, project này đã thu hút hơn 525 stars và 17 forks trên GitHub. Được viết chủ yếu bằng ngôn ngữ C, NanoLang không chỉ nhẹ mà còn có khả năng biên dịch (transpile) trực tiếp sang C để đạt hiệu suất tối đa.
Tính năng nổi bật
- Quản lý bộ nhớ tự động (ARC): Sử dụng cơ chế Reference Counting (v2.3.0) giúp tối ưu bộ nhớ mà không cần gọi
free()thủ công. - Kiểm thử bắt buộc (Mandatory Testing): Mọi hàm đều yêu cầu một khối
shadowđể viết test. Điều này cực kỳ hữu ích cho LLM để tự kiểm tra code mình vừa tạo ra. - Cú pháp linh hoạt (Dual Notation): Hỗ trợ cả ký pháp tiền tố
(+ a b)và trung tốa + b, giúp AI dễ dàng xử lý logic. - Tối ưu hóa tự động bởi AI: Tích hợp vòng lặp tự động tối ưu hóa dựa trên profiling.
- Hiệu suất Native: Vì transpiles sang C, code NanoLang chạy nhanh như các ứng dụng hệ thống.

Cài đặt
Để bắt đầu với NanoLang, bạn cần có môi trường Linux (Ubuntu 22.04+), macOS hoặc WSL2 trên Windows. Việc cài đặt rất đơn giản thông qua make:
# Clone repository
git clone https://github.com/jordanhubbard/nanolang.git
cd nanolang
# Biên dịch compiler
make build
Sau khi chạy lệnh trên, file thực thi của compiler sẽ nằm tại bin/nanoc.
Hướng dẫn sử dụng
Hãy cùng mình viết một chương trình "Hello World" có kèm theo unit test - một yêu cầu bắt buộc trong NanoLang.
- Tạo file
hello.nano:
fn greet(name: string) -> string {
return (+ "Hello, " name)
}
# Khối shadow dùng để test hàm greet
shadow greet {
assert (== (greet "World") "Hello, World")
}
fn main() -> int {
(println (greet "VietNam"))
return 0
}
shadow main { assert true }
- Biên dịch và chạy:
./bin/nanoc hello.nano -o hello
./hello
Nếu bạn muốn khám phá thêm, NanoLang còn cung cấp một Web Playground ngay trong repo. Bạn có thể khởi tạo bằng cách:
./bin/nanoc examples/playground/playground_server.nano -o bin/playground
./bin/playground
# Sau đó truy cập http://localhost:8080

Kết luận
Ưu điểm:
- Cú pháp cực kỳ trong sáng, dễ học cho cả người và máy.
- Cơ chế
shadowgiúp đảm bảo chất lượng code ngay từ đầu. - Tương tác tốt với hệ sinh thái C.
Nhược điểm:
- Đang ở giai đoạn thực nghiệm, hệ sinh thái thư viện còn hạn chế.
- Chủ yếu dành cho mục đích nghiên cứu và AI-assisted coding.
Ai nên dùng tool này? Nếu bạn là một nhà nghiên cứu AI, người đang xây dựng các công cụ hỗ trợ lập trình bằng LLM, hoặc đơn giản là một lập trình viên yêu thích tìm hiểu về thiết kế ngôn ngữ mới (vibe-coding), NanoLang là một dự án không thể bỏ qua.
Discussion