10 điểm bởi GN⁺ 2026-03-16 | 11 bình luận | Chia sẻ qua WhatsApp
  • Là một ngôn ngữ biên dịch kiểu tĩnh được viết bằng từ khóa tiếng Hàn, tạo ra binary native thông qua LLVM IR
  • Cung cấp cả trình biên dịch và trình thông dịch được triển khai bằng Rust, đồng thời hỗ trợ build·chạy·REPL·LSP qua CLI hgl
  • Mọi từ khóa đều là tiếng Hàn như 함수, 만약, 반복, 변수, và tên biến cũng như tên hàm có thể được định nghĩa bằng tiếng Hàn
  • Tích hợp các tính năng thực dụng như I/O tệp, JSON, HTTP, biểu thức chính quy, ngày/giờ, system call, và bao gồm 18 ví dụ
  • Hiện thực hóa cấu trúc khoa học và sự lan tỏa văn hóa của Hangul trong một ngôn ngữ lập trình, được chú ý như một thử nghiệm mới kết hợp việc học tiếng Hàn với lập trình

Tổng quan về ngôn ngữ Han

  • Han là một ngôn ngữ biên dịch kiểu tĩnh được viết bằng từ khóa tiếng Hàn, tạo ra binary native thông qua LLVM IR
    • Bao gồm toolchain trình biên dịchtrình thông dịch tree-walking được viết bằng Rust
    • Có thể chạy trình thông dịch, build, REPL và máy chủ LSP bằng lệnh hgl
  • Mọi từ khóa đều được cấu thành bằng Hangul, ví dụ: 함수, 만약, 반복, 변수, 출력
  • Mục tiêu là hiện thực hóa hệ chữ cái khoa học của Hangul trong một ngôn ngữ lập trình, hướng tới sự kết hợp giữa vẻ đẹp ngôn ngữ và độ chính xác kỹ thuật

Tính năng chính

  • Hỗ trợ từ khóa và định danh bằng Hangul: có thể viết tên biến, tên hàm, tên struct... bằng Hangul
  • Hệ thống kiểu tĩnh: cung cấp 5 kiểu cơ bản là 정수, 실수, 문자열, , 없음
  • Chế độ biên dịch và thông dịch: LLVM IR → clang → tạo binary hoặc chạy ngay lập tức
  • REPL và máy chủ LSP: hỗ trợ chạy tương tác và hoàn thành mã bằng các lệnh hgl repl, hgl lsp
  • Tính năng tích hợp sẵn
    • Mảng, struct, closure, pattern matching, xử lý ngoại lệ, generics
    • I/O tệp, JSON, HTTP, biểu thức chính quy, ngày/giờ, system call
    • Chuỗi định dạng, hash map, hàm toán học tích hợp
  • Bao gồm 18 chương trình ví dụ: Hello World, gọi HTTP API, v.v.

Cài đặt và chạy

  • Thành phần bắt buộc: Rust(1.70+), clang
  • Quy trình cài đặt
  • Cung cấp tiện ích mở rộng VS Code: hỗ trợ tô sáng cú pháp và LSP
  • Lệnh CLI
    • hgl interpret <file.hgl> — chạy trình thông dịch
    • hgl build <file.hgl> — biên dịch thành binary native
    • hgl run <file.hgl> — biên dịch rồi chạy ngay
    • hgl repl — chế độ tương tác
    • hgl lsp — chạy máy chủ LSP

Trạng thái triển khai hiện tại

  • Các tính năng hoạt động đầy đủ
    • Kiểu dữ liệu, luồng điều khiển, hàm, chuỗi, mảng, hash map, struct, xử lý lỗi, kiểm tra kiểu
    • JSON, HTTP, biểu thức chính quy, ngày/giờ, hệ thống, I/O tệp, hàm toán học, module, generics
  • Các tính năng được triển khai một phần
    • Khi dùng hgl build, phần sinh mã cho closure·chuỗi·phương thức mảng vẫn chưa hoàn thiện
  • Các tính năng chưa được triển khai
    • Tính an toàn Null (không có kiểu Option), xử lý bất đồng bộ/song song, garbage collection, tối ưu tail recursion

Hangul và lập trình

  • Hangul là một hệ chữ cái khoa học biểu đạt trực quan cấu trúc âm vị, do Vua Sejong sáng tạo vào năm 1443
  • Han phản ánh sự rõ ràng có tính cấu trúc của Hangul vào cú pháp mã nguồn
  • Trên toàn thế giới hiện có hơn 16 triệu người đang học tiếng Hàn, và Han cung cấp một phương tiện học Hangul thông qua lập trình
  • Ví dụ từ khóa
    • 함수(function), 만약(if), 반복(for), 반환(return), 변수(variable), 출력(print), v.v.

Thiết kế và cấu trúc

  • Pipeline trình biên dịch dựa trên Rust
    • Lexer → Parser → AST → Interpreter / CodeGen → LLVM IR → clang → Binary
  • Cấu trúc dự án
    • src/ — mã cốt lõi của trình biên dịch và trình thông dịch
    • editors/vscode/ — tiện ích mở rộng VS Code
    • Bao gồm examples/, spec/, tests/
  • Lý do cho các lựa chọn thiết kế
    • Đơn giản hóa việc build bằng tạo IR dạng văn bản thay vì LLVM C API
    • Trình thông dịch ưu tiên thực thi nhanh, trình biên dịch ưu tiên hiệu năng
    • Pattern matching và an toàn bộ nhớ của Rust rất phù hợp để hiện thực ngôn ngữ

Kiểm thử và giấy phép

  • Chạy 46 bài kiểm thử bằng cargo test (41 unit, 5 integration)
  • Được phát hành theo giấy phép MIT

Ý nghĩa văn hóa

  • Han là một ngôn ngữ thử nghiệm kết hợp vẻ đẹp của Hangul và độ chính xác của lập trình
  • Nó đưa ra một cách tiếp cận mới phá bỏ ranh giới giữa ngôn ngữ và mã nguồn cho cả người học tiếng Hàn lẫn lập trình viên

11 bình luận

 
runableapp 2026-03-17

Nhờ vậy tôi đã có thêm được những thông tin hữu ích. GeekNews chọn lọc các tin tức cốt lõi nên mỗi ngày ghé thăm đều là một niềm vui. Bản thân tôi cũng đang phát triển một ngôn ngữ lập trình tiếng Hàn, nên tôi nhìn nhận rất tích cực việc những thử nghiệm như thế này tiếp tục được duy trì.

Từ góc nhìn của một người đã sống lâu năm ở nước ngoài và theo dõi những thay đổi của Hàn Quốc, tôi luôn thấy đáng tiếc khi tiếng Anh xâm nhập quá mức vào đời sống thường nhật và toàn bộ lĩnh vực công nghiệp. “Phương ngữ Pangyo”, những tên chung cư khó hiểu, các menu dị dạng kiểu MSGR, hay những biển hiệu đầy đặc tiếng Anh đều trông như đang làm suy yếu sức sống tự thân của ngôn ngữ chúng ta. Dù rào cản tiếng Anh đã thấp hơn nhờ giáo dục sớm, tính trực quan mà tiếng mẹ đẻ mang lại vẫn là điều không thể thay thế. Cũng giống như khi ở nước ngoài, một biển hiệu viết bằng Hangul đập ngay vào mắt, bộ não của chúng ta tiêu tốn ít năng lượng nhất khi xử lý tiếng mẹ đẻ.

print("Hello, world!");

xuất ra "Xin chào!"

Cái nào đập vào mắt và dễ thấm hơn?

AI đang phá bỏ rào cản ngôn ngữ, nhưng việc nghiên cứu ngôn ngữ lập trình tiếng Hàn là quá trình loại bỏ "lớp dịch" không cần thiết trong hệ thống tư duy của chúng ta để tối đa hóa hiệu suất não bộ. Việc xuất ra tạo cảm giác trực quan hơn print là điều hoàn toàn tự nhiên. Dù rất khó để ngay lập tức trở thành dòng chính vì tính phổ dụng hay logic của thị trường việc làm, tôi vẫn hy vọng trong tương lai sẽ xuất hiện nhiều ngôn ngữ tiếng Hàn đa dạng và hoàn thiện hơn nữa để làm phong phú hệ sinh thái.

 
mhcoma 2026-03-16

Bằng tiếng Hàn à... đúng là không thể ngừng được cái cảm giác rợn người khó tả này.

 
coremaker 2026-03-16

Nhớ lại dự án Seed nhỉ

 
crawler 2026-03-17

Có vẻ như là một người đã làm công việc kế toán lâu năm chứ không phải phát triển phần mềm, vậy mà lại tạo ra được một compiler và còn nhận hơn 100 sao trên GitHub nữa..
Đúng là thời đại của AI đã đến rồi

 
savvykang 2026-03-17

Nghĩ đến việc viết code bằng bất đồng bộ-chờ thay vì async-await thì đúng là thấy cũng tiện.

 
github88 2026-03-16

Ngôn ngữ lập trình thì tính đa dụng mới là quan trọng..

 
nottiger 2026-03-16

Ồ, tuyệt quá.

 
bichi 2026-03-16

Xin chào, một buổi sáng mạnh mẽ và tràn đầy năng lượng!

 
sea715 2026-03-16

Wow

 
xguru 2026-03-16

Ồ, thấy thứ như thế này trên Hacker News cũng thật tuyệt. Cảm ơn Đức Vua Sejong.

 
GN⁺ 2026-03-16
Ý kiến trên Hacker News
  • Nếu bạn quan tâm đến ngôn ngữ lập trình bằng tiếng Hàn, tôi đề xuất ngôn ngữ hàm Nuri
    Liên kết GitHub của Nuri
    Nó không chỉ dừng ở mức dịch từ khóa, mà còn có thể phản ánh cấu trúc ngữ pháp tiếng Hàn thực sự vào mã
    Ví dụ, nếu viết “chia 10 cho 5 rồi in ra” thì kết quả sẽ in ra “2”
    Ngoài ra còn có một ngôn ngữ khác tên là Yaksok. Mã ví dụ trò chơi 2048 được viết hoàn toàn bằng tiếng Hàn

    • Cảm ơn phản hồi. Tôi nghĩ cả Nuri lẫn Yaksok đều là những ngôn ngữ hợp lý và được thiết kế tốt, nhưng trước mắt tôi đang tập trung để người dùng tiếng Anh có thể tiếp cận phiên bản được chuyển sang Rust. Có vẻ như như vậy sẽ tạo ra một tập người dùng lớn hơn
    • Tôi hầu như không biết từ tiếng Hàn nào, nhưng tôi tò mò không biết Yaksok có cùng từ nguyên với từ tiếng Nhật 約束(やくそく) hay không
  • Tôi nghĩ đây là một ý tưởng thực sự tuyệt vời. Hangul là một hệ chữ viết được thiết kế rất logic, nên có thể học trong nửa ngày buổi chiều
    Câu trả lời trên StackExchange để học Hangul

    • Những mẹo ghi nhớ (mnemonics) như thế này thực sự rất hữu ích. Tôi định thêm nó vào hướng dẫn học tiếng Hàn mà tôi đang viết (tolearnkorean.com)
      Hangul có số lượng chữ cái tương tự tiếng Anh nên có thể học khá nhanh, nhưng việc ghi nhớ từ vựng thì khó hơn một chút. Vì vậy tôi đang dùng Anki cùng với ứng dụng học dạng trò chơi do chính tôi làm
    • Đây là dạng kiến thức sâu mà ngay cả người Hàn cũng không hẳn biết rõ. Tôi sẽ thêm trang này vào tài liệu tham khảo trên GitHub. Thật vui khi có những người ủng hộ như vậy
    • Tôi đã thêm ngay liên kết đó vào mục “Beauty of Hangul” trong README
  • Với tư cách là người bản ngữ tiếng Hàn, tôi muốn chia sẻ ngắn gọn một ý kiến
    Danh từ được dịch khá tự nhiên, nhưng động từ mệnh lệnh trong tiếng Anh cần đặc biệt cẩn thận khi chuyển sang tiếng Hàn. Ví dụ, “find” có thể đổi thành 찾다, 찾기, 찾음..., nhưng tùy ngữ cảnh mà có thể trở nên gượng gạo
    Số nhiều cũng là một vấn đề. Tiếng Anh phân biệt số ít và số nhiều rất rõ, còn tiếng Hàn thì không. Nếu cố chỉ rõ số nhiều như “các từ” thì nhiều lúc lại trở nên thiếu tự nhiên
    Nếu không chỉ thay từ khóa đơn giản mà còn tính đến khác biệt cấu trúc giữa tiếng Anh và tiếng Hàn, tôi nghĩ đây có thể trở thành một dự án mạnh hơn nhiều

  • Khi học khoa học máy tính ở đại học, tôi cảm thấy việc các ngôn ngữ lập trình dựa trên tiếng Anh là một lợi thế lớn cho người dùng tiếng Anh
    Những người bạn du học sinh của tôi gặp khó khăn hơn khi học vì không quen với tiếng Anh. Vì thế câu đùa rằng lập trình nên được tính là tín chỉ ngoại ngữ nghe khá buồn cười

    • Tôi thì nghĩ ngược lại. Ngay cả khi không giỏi tiếng Anh, tôi vẫn tự học lập trình được. Cuối cùng thì số từ khóa của ngôn ngữ cũng không nhiều, và dù không biết int là viết tắt của integer thì cũng chẳng có vấn đề gì
      Cái thực sự khó là học chính việc lập trình. Tuy vậy, việc các chủ đề nâng cao hay tài liệu chỉ có bằng tiếng Anh đúng là một rào cản lớn với người học ESL
    • Ở Ấn Độ cũng vậy, tiếng Anh là một lý do lớn khiến ngành CNTT phát triển. Bạn bè tôi được giáo dục bằng ngôn ngữ địa phương đã phải bỏ ra gấp đôi công sức ở đại học chỉ để theo kịp giáo trình tiếng Anh. Thật đáng buồn khi rào cản ngôn ngữ dẫn tới lãng phí nhân tài
    • Những người bạn không dùng tiếng Anh của tôi cũng nói rằng từ khóa còn chưa chiếm tới 1% độ khó của lập trình. Tên biến hay tên lớp vốn đã có thể viết bằng Unicode, nên gần như không cần dịch
    • Việc tiếng Anh trở thành tiêu chuẩn toàn cầu là điều hợp lý. Trong nhiều dự án, việc dùng tiếng Anh là rất tự nhiên
    • Vấn đề thực sự không phải là từ khóa, mà là giáo trình, bài báo và tài liệu đều bằng tiếng Anh. Chỉ cần 30 phút là đủ để thuộc vài từ khóa
  • Tôi không biết tiếng Hàn, nhưng nhờ chuỗi thảo luận này mà tôi học được khá nhiều góc nhìn ngôn ngữ học
    Thiết kế âm vị học của Hangul (liên kết),
    đặc điểm số nhiều trong tiếng Hàn (liên kết),
    vấn đề nén token giữa tokenizer của LLM và tiếng Hàn (liên kết),
    nhịp điệu của bàn phím Hangul nơi phụ âm và nguyên âm được chia theo vị trí tay (liên kết) đều đặc biệt thú vị

  • Tôi nghĩ những thử nghiệm như thế này có thể dẫn đến sự phân mảnh ngôn ngữ (fragmentation).
    Nếu ai cũng tạo ngôn ngữ lập trình bằng ngôn ngữ của riêng mình, thì việc cộng tác hay tuyển dụng sẽ trở nên khó khăn hơn, và việc chia sẻ công nghệ cũng sẽ vất vả hơn
    Cá nhân tôi nghĩ nếu cả thế giới dùng một ngôn ngữ thì chiến tranh và hiểu lầm sẽ giảm đi. Dĩ nhiên sự đa dạng văn hóa sẽ giảm, nhưng hiệu quả giao tiếp sẽ tăng lên

    • Sáng tạo và thử nghiệm không bao giờ là điều ngu ngốc. Tác giả tạo ra ngôn ngữ này như một thử nghiệm mang tính nghệ thuật, nên phê phán nó từ góc độ chính trị hay kinh doanh là bỏ lỡ bản chất cốt lõi
    • Vậy ý bạn là sẽ tạo một ngôn ngữ lập trình mới bằng Esperanto à?
  • Cách tiếp cận chỉ đơn giản là dịch từ khóa khá thú vị
    Giống như trong ví dụ mã

    펀크 투섬(아래이: 목록[정수], 타개트: 정수) -> 목록[정수]:
    동안 시작 < 끝:
    

    nếu viết theo kiểu này thì mã có thể trở nên ngắn gọn hơn. Tuy vậy, ưu điểm của việc phân biệt chữ hoa chữ thường sẽ biến mất
    Tôi từng nghe rằng, bất kể mật độ ngôn ngữ thế nào thì tốc độ xử lý thông tin cũng tương đương nhau

    • Đầu những năm 2000 từng có một nỗ lực dịch Python sang tiếng Trung
      Bài blog liên quan
      Nhưng nó không thành công. Vì hầu hết môi trường máy tính đã đòi hỏi nhập ký tự Latin, và việc nhớ vài từ khóa không khó
    • Ý kiến hay. Han dùng các từ tiếng Hàn thực sự (함수, 만약...), nhưng nếu dùng các từ phiên âm như ví dụ 펀크, 아래이 thì sẽ tạo cảm giác không tự nhiên với người dùng tiếng Hàn
    • Scratch dựa trên JSON nên việc chuyển đổi đa ngôn ngữ khá dễ. Nhưng lý do phần lớn lập trình viên vẫn giữ từ khóa tiếng Anh là vì tài liệu, thư viện và môi trường cộng tác đều xoay quanh tiếng Anh
      Ngay cả trong thời đại LLM, phần lớn dữ liệu huấn luyện vẫn là mã tiếng Anh, nên mã tiếng Anh có lẽ vẫn hiệu quả hơn
    • Với tiếng Nhật, việc chuyển chế độ nhập khá bất tiện nên không hiệu quả cho lập trình. Tiếng Hàn cũng có thể gặp vấn đề tương tự
    • Ví dụ này khá vui
  • Dự án rất tuyệt. Khoảng 190 năm trước(!) tôi từng học ở một trường đại học tại Hàn Quốc, và giờ chỉ còn biết tiếng Hàn ở mức cơ bản, nhưng khi nhìn mã ví dụ tôi có cảm giác như đang học thêm từ mới

  • Tôi thực sự thích dự án này. Nhìn các đoạn mã mẫu mà chẳng hiểu gì cả khiến tôi phần nào đồng cảm được cảm giác của các lập trình viên không dùng tiếng Anh khi lần đầu thấy một ngôn ngữ dựa trên tiếng Anh
    Lisp thì vẫn là thiên đường dấu ngoặc như mọi khi :-)

    • Rào cản thực sự không phải là từ khóa, mà là việc phần lớn tài liệu và thảo luận chỉ có bằng tiếng Anh
    • Trong nhiều thập kỷ, việc dùng tiếng Anh là lựa chọn hợp lý. Cảm ơn bạn đã để lại bình luận
  • Nó làm tôi nhớ đến Easy Programming Language của Trung Quốc
    Liên kết wiki EPL
    Khoảng 15 năm trước, rất nhiều trẻ em ở Trung Quốc đã học lập trình lần đầu bằng ngôn ngữ này