Giới thiệu Aperio: Ngôn ngữ lập trình được thiết kế riêng cho kỷ nguyên LLM

Công nghệ15 tháng 5, 2026·7 phút đọc

Aperio là một ngôn ngữ lập trình thử nghiệm mới được xây dựng để giải quyết sự kém hiệu quả của các ngôn ngữ truyền thống trong quy trình phát triển có sự hỗ trợ của LLM. Bằng cách sử dụng mô hình cấu trúc đệ quy gọi là "loci", ngôn ngữ này nhằm mục đích đồng nhất hóa mô hình tư duy của con người và cấu trúc mã nguồn, giúp giảm thiểu chi phí tính toán và độ trễ khi AI tạo ra code.

Giới thiệu Aperio: Ngôn ngữ lập trình được thiết kế riêng cho kỷ nguyên LLM

Mọi ngôn ngữ lập trình được thiết kế trước năm 2023 đều được tối ưu hóa để giải quyết một sự đánh đổi duy nhất: giảm thiểu ma sát giữa khả năng nhận thức của con người và việc thực thi của máy móc. Từ Assembly đến C, các runtime được quản lý (managed runtimes) hay DSL đều là những điểm khác nhau trên cùng một đường thẳng đó. Tuy nhiên, trong một quy trình làm việc dựa trên LLM (Large Language Model), các ngôn ngữ này không trở nên rẻ hơn mà thậm chí còn đắt đỏ hơn. Chi phí này ẩn trong số lượng token, tỷ lệ thử lại (retry rate) và độ trễ mà LLM phải tiêu thụ trong mỗi lượt tương tác. Các ngôn ngữ tiền-LLM hiện nay giống như một loại thuế ẩn trong kỷ nguyên AI.

Phần lớn nỗ lực của LLM trong mỗi lượt không nằm ở việc nhớ lại cú pháp. Nó nằm ở việc dịch chuyển giữa mô hình tư duy của người dùng về hệ thống và hình dạng cấu trúc của ngôn ngữ lập trình. Một ngôn ngữ có các nguyên thủy (primitives) không khớp với cách con người suy nghĩ về hệ thống sẽ buộc LLM phải thực hiện quá trình dịch chuyển này mỗi lượt, và phải trả toàn bộ chi phí cho việc đó.

Aperio được xây dựng trên một tiền đề khác biệt: tồn tại một mô hình cấu trúc bất biến về nền tảng (substrate-invariant) — một siêu đồ thị đệ quy của các đơn vị có kiểu dữ liệu và vòng đời gọi là loci — mà cả tư duy con người và tư duy của LLM đều vận hành khi làm việc với các hệ thống. Một ngôn ngữ có các nguyên thủy dựa trên mô hình đó sẽ làm sụp đổ lớp chuyển đổi dịch thuật. Mô hình tư duy và mã nguồn sẽ chia sẻ cùng một nền tảng.

Aperio trong thực tế

Hãy chọn một hệ thống mà bạn đã có trong đầu: một người tạo trận (matchmaker) đằng sau một game đa người chơi. Trong đầu bạn, thứ đó là một dịch vụ giữ hàng đợi người chơi đang chờ, tạo ra một trận đấu khi đủ người xếp hàng, và quay lại trạng thái chờ.

Đây là đoạn mã thực hiện điều đó trong Aperio:

type Player    { id: String; name: String; }
type MatchInfo { match_id: String; players: [Player]; }

topic JoinQueue  { payload: Player; }
topic MatchReady { payload: MatchInfo; }

@form(vec)
locus Matchmaker {
  params   { target_size: Int = 4; }
  capacity { heap waiting of Player; }
  bus {
    subscribe JoinQueue as on_join;
    publish   MatchReady;
  }
  fn on_join(p: Player) {
    self.waiting.push(p);
    if self.waiting.len() >= self.target_size {
      MatchReady <- assemble_match(self.waiting, self.target_size);
    }
  }
}

Mọi mệnh đề của mô tả mô hình tư duy đều có một vị trí cú pháp trong mã, theo đúng thứ tự bạn nghĩ về chúng:

  • "Một dịch vụ" → locus Matchmaker
  • "Giữ hàng đợi người chơi đang chờ" → capacity { heap waiting of Player; } (chú thích @form(vec) cung cấp các phương thức giống như hàng đợi)
  • "Nhận người chơi muốn tham gia" → subscribe JoinQueue as on_join
  • "Thông báo trận đấu" → publish MatchReady
  • "Khi đủ người xếp hàng" → câu lệnh if nội tuyến

Sự tương quan về cấu trúc chính là điểm mấu chốt. Cùng một mô tả này trong Go, Rust hay TypeScript sẽ mở rộng thành nhiều mối quan tâm khác: lựa chọn mutex, kiểu kênh, máy móc async/await, kết nối vòng đời rõ ràng, xử lý lỗi tại mọi ranh giới kênh. Mỗi yếu tố đó là một bước dịch chuyển mà LLM phải thực hiện mỗi lượt. Aperio loại bỏ chúng vì ngôn ngữ đã cam kết các quyết định đó ở tầng cấu trúc.

Lựa chọn @form(vec) ở đây là một quyết định thiết kế thực sự, không phải ngẫu nhiên. @form(ring_buffer) cung cấp cùng một hình dạng nhưng với trần dung lượng cứng và ngữ nghĩa bỏ rõ ràng khi đầy; @form(hashmap) được khóa theo id người chơi sẽ giúp bạn có khả năng hủy dựa trên ID một cách tự nhiên. Các Forms (hình thức) là cách Aperio phơi bày những lựa chọn đó.

Trải nghiệm trên mã nguồn của chính bạn

Ví dụ matchmaker ở trên là một ví dụ được xây dựng sẵn. Khẳng định này có thể kiểm chứng trên mã mà bạn đã có. Trong bất kỳ công cụ lập trình có hỗ trợ LLM nào bạn sử dụng (Claude Code, Cursor, hay bất cứ thứ gì), hãy thả tệp AGENTS.md của dự án này vào ngữ cảnh của tác nhân, sau đó yêu cầu nó đọc lại một module hoặc dịch vụ từ codebase hiện có của bạn theo các thuật ngữ loci, contracts và bus topics.

Thông thường, kết quả trả về sẽ là một sự phân tích cấu trúc khớp với mô hình tư duy của bạn về hệ thống một cách chính xác đáng ngạc nhiên — bởi vì tác nhân đang sử dụng từ vựng locus đệ quy giống hệt như bạn đã sử dụng khi suy luận về code. Sự ma sát mà bạn thường cảm thấy giữa cách bạn nghĩ về hệ thống này và những gì thực sự nằm trên trang giấy phần lớn sẽ biến mất.

Nếu sự phân tích trông sai hoặc không hữu ích, luận điểm thất bại với codebase của bạn và đó là phản hồi hữu ích — hãy mở một issue. Nếu nó trông đúng, bạn đã cảm nhận được sự tương quan cấu trúc từ hướng ngược lại: không phải bằng cách viết code Aperio mới, mà bằng cách đọc code hiện có của bạn thông qua cùng một lăng kính đó.

Hơn cả một ngôn ngữ lập trình

Mô hình cấu trúc mà Aperio vận hành không dành riêng cho phần mềm. Cùng một siêu đồ thị đệ quy tổ chức sự phối hợp tại mọi nền tảng mà chương trình nghiên cứu cơ bản hướng tới: các thể chế, mạng lưới điều tiết sinh học, hệ thống vật lý, kiến trúc nhận thức. Giao diện (frontend) của Aperio, về nguyên tắc, là một ngôn ngữ thiết kế có thể nhắm đến các cỗ máy ở bất kỳ nền tảng nào trong số đó. Hình thức ngôn ngữ lập trình là sự hiện thực hóa đầu tiên, không phải là duy nhất. (Được nắm giữ một cách lỏng lẻo — công việc ngay lập tức là chính ngôn ngữ này).

Trạng thái và hình thức hiện tại

Đây là một ngôn ngữ lập trình thử nghiệm. Trình biên dịch (compiler) bao gồm tạo mã gốc (native codegen) thông qua LLVM 18 và một thông dịch viên tree-walking để phản hồi nhanh. Ngữ nghĩa vẫn đang di chuyển; các thay đổi không tương thích (breaking changes) được mong đợi và chào đón.

Tiếp tục đến phần "Getting Started" để cài đặt trình biên dịch và viết locus đầu tiên của bạn. Sau khi bạn đã cảm nhận được hình dạng, các chương "Concepts" sẽ đi sâu qua mô hình cấu trúc. Để biết hợp đồng chuẩn xác — chính xác những gì trình biên dịch chấp nhận và những gì nó làm — hãy xem phần "Reference" (trỏ đến kho lưu trữ spec/).

Mô hình cấu trúc là chủ đề của một chương trình nghiên cứu đang diễn ra. Sự chính thức hóa đầu tiên là Rook (2026, sắp ra mắt), Capacity Allocation Model; bản in trước có sẵn khi yêu cầu.

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