19 điểm bởi smc0478 2025-11-19 | 29 bình luận | Chia sẻ qua WhatsApp

Xin chào.
Tôi đã tạo ra một ngôn ngữ lập trình được viết bằng tiếng Hàn.

Lý do tạo ra

  • Sau khi thấy những ngôn ngữ lập trình viết bằng Hangul như Umjeng hay Aheui, tôi muốn thử viết code một cách tự nhiên bằng tiếng Hàn.
  • Đây cũng là quá trình học tập để sau này tạo ra một ngôn ngữ hoàn chỉnh hơn.

Cài đặt

pip install korean-lang  

Các loại cú pháp

Tôi đã tạo ra các cú pháp được giới thiệu bên dưới.
Để biết chi tiết hơn, vui lòng tham khảo liên kết GitHub của tôi.

In ra

"annyeong sesang!"eul xuất ra.  

Biến

  • Tên biến được tạo thành từ chữ Hàn (không được dùng kiểu như giyeok), _, và số.
  • Biến có thể chứa số nguyên, chuỗi, mảng, từ điển, v.v.
jeongsuneun 1i doenda.  
sosuneun 3.141592ga doenda.  
ireumeun "Hong Gil-dong"i doenda.  
chamgapseun chami doenda.  
bingapseun eopseumi doenda.  
sutja_baeyeoreun [1 daeum 2 daeum 3 daeum 4]i doenda.  
saram_jeongboneun {"ireum"eun "Kim Cheol-su" tto "nai"neun 25}i doenda.  

Điều kiện

  • manyak ... imyeon/myeon, anigo manyak ... imyeon/myeon, animyeon ... imyeon/myeon hoạt động tương tự như if, else if, else và thực thi daeum ... mundaneul silhaenghanda..
nai-neun ipryeokhan geoseul jeongsuro_byeonhwanhan geosi doenda.  
  
manyak nai-ga 18boda keugeona gatdamyeon daeum  
    "seonginimnida."reul chulryeokhanda.  
mundaneul silhaenghanda.  
anigo manyak nai-ga 13boda keuda tto-neun nai-ga 13rang gatdamyeon daeum  
    "cheongsonyeonimnida."reul chulryeokhanda.  
mundaneul silhaenghanda.  
animyeon daeum  
    "eoriniimnida."reul chulryeokhanda.  
mundaneul silhaenghanda  

Vòng lặp

  • gyesok ... in dongan tương tự while và thực thi daeum ... mundaneul banbokhanda..
  • ...e inneun gak hangmokdeureul ...ro gajyeowafor ... in ... và thực thi daeum ... mundaneul banbokhanda..
sutjaneun 0i doenda.  
gyesok sutjaga 5boda jakda-in dongan daeum  
    sutjareul chulryeokhanda.  
    sutjaneun sutjawa 1eul deohan geosi doenda.  
mundaneul banbokhanda.  
  
baeyeoreun [10 daeum 20 daeum 30]i doenda.  
baeyeore inneun gak hangmokdeureul sutjaro gajyeowa daeum  
    sutjareul chulryeokhanda.  
mundaneul banbokhanda.  

Hàm

  • hamsu ...neun (...gwa ...ro) là phần định nghĩa hàm, và daeum ... mundaneul silhaenghanda. là phần thực thi của hàm.
  • Hàm được gọi theo kiểu ...gwa/wa ...eul/reul ... ro/euro ...handa./da..
hamsu paektorieoreul_guhandaneun garo daeum  
    manyak gaga 0irang gatdamyeon daeum  
        gyeolgwa gapseun 1i doenda. geurigo kkeutnanda.  
    mundaneul silhaenghanda.  
    gyeolgwa gapseun gawa ((gareul 1ro ppaen geot)euro paektorieoreul_guhan geot)eul gophan geosi doenda.   
    geurigo kkeutnanda.  
mundaneul silhaenghanda.  
  
4ro paektorieoreul_guhan geoseul chulryeokhanda.   

Struct

  • Struct tương tự struct của ngôn ngữ C.
gujo sarameun daeum  
    byeonsu ireumi itda.  
    byeonsu naiga itda.  
gapseul gajinda.  
  
Cheol-suneun sarami doenda.  
Cheol-suui ireumeun "Cheol-suda"ga doenda.  
Cheol-suui ireumeul chulryeokhanda.   

Lớp

  • yuhyeong là lớp trong các ngôn ngữ khác.
yuhyeong dongmureun daeum  
    byeonsu ireumi itda.  
    
    hamsu sorireul_naendaneun daeum  
        dongmurui ireumgwa "i(ga) sorireul naemnida."reul deohan geoseul chulryeokhanda.  
    mundaneul silhaenghanda.  
gapseul gajinda.  
  
Gangajineun dongmuri doenda.  
Gangajiui ireumeun "Badugi"ga doenda.  
Gangaji aneseo sorireul_naenda.   

Điểm còn tiếc

  • Có những cú pháp gượng gạo, không tự nhiên khi diễn đạt bằng tiếng Hàn, chẳng hạn như mảng.
  • Tôi đã dịch class sang tiếng Hàn là yuhyeong, nhưng có lẽ vẫn còn từ nào đó hay hơn nên nếu sau này tìm ra, tôi sẽ đổi.

Kết

Nó không thật sự hữu dụng, và vì tôi viết phần code bên trong khá vội trong vòng 2 tuần nên mã nguồn cũng khá bừa bộn, nhưng mong mọi người xem vui vẻ.
Cảm ơn bạn đã đọc.

29 bình luận

 
qlghwp123 2025-11-26

Thật sự có vẻ rất tuyệt! Tôi ủng hộ.

 
smc0478 2025-11-26

Cảm ơn bạn.

 
oktroco 2025-11-26

Có vẻ đây cũng sẽ rất tốt cho mục đích giáo dục dành cho những người không quen với tiếng Anh và toán học.
Việc có thể giải thích rất tốt tư duy tính toán bằng tiếng Hàn mà không cần các ký hiệu như "if, for, while, =" có vẻ là một lợi thế giáo dục cực lớn.
Đúng là một ý tưởng quá tuyệt vời!

 
smc0478 2025-11-26

Cảm ơn. Quả thật khi dùng tiếng Hàn thì có những chỗ có vẻ dễ đọc hơn tiếng Anh.

 
cronex 2025-11-26

Mảng có lẽ không nhất thiết phải dùng dấu phân cách là 다음, mà dùng dấu phẩy cũng được. Và tôi cũng tò mò liệu mảng có phải là cấu trúc có thể chứa cả struct/class, mảng hoặc dictionary hay không.

 
smc0478 2025-11-26

Khi đó mục tiêu đúng là chỉ dùng tiếng Hàn và loại bỏ tối đa tiếng Anh cùng các dấu câu, nên tôi đã không dùng, nhưng chắc chắn nếu thêm dấu phẩy vào thì sẽ tự nhiên hơn. Tôi sẽ thử bổ sung sau.

Ngoài ra, mảng được thiết kế như một cấu trúc có thể chứa dữ liệu của mọi kiểu. Nếu không được thì đó là bug. T_T

 
t7vonn 2025-11-26

Thú vị đấy.

 
smc0478 2025-11-26

Cảm ơn bạn.

 
tesla52 2025-11-26

Thú vị đấy. Tôi vừa nảy ra một ý tưởng hay, chắc sẽ thử làm thành một side project.

 
smc0478 2025-11-26

Tốt lắm. Tôi sẽ chờ mong.

 
softer 2025-11-23

Ồ ồ .. ủng hộ bạn

 
smc0478 2025-11-26

Cảm ơn bạn.

 
kornet 2025-11-22

Thật hay khi dùng ít ký tự đặc biệt như +-=$& hơn so với các ngôn ngữ khác. Trên bàn phím của các thiết bị di động nhỏ, việc nhập ký tự đặc biệt khá khó.

 
smc0478 2025-11-26

Ồ, đó đúng là một ưu điểm nhỉ. Cảm ơn bạn.

 
nottiger 2025-11-19

Quá tuyệt vời...

 
smc0478 2025-11-20

Cảm ơn bạn.

 
roxie 2025-11-19

Có lẽ là khác biệt về sở thích cá nhân, nhưng tôi nghĩ dùng “ida” sẽ hay hơn “doenda”.

 
smc0478 2025-11-19

Ban đầu, phép gán biến là ganeun ~ida.. Nhưng khi phát triển, vì cũng dùng "ida/da" để biểu diễn lời gọi hàm nên việc phân tích cú pháp biểu thức trở nên mơ hồ, nên đã đổi thành "doenda". Sau này có lẽ tôi sẽ thử làm để có thể phân tích cú pháp bằng "ida".

 
roxie 2025-11-19

Đúng vậy nhỉ, có vẻ lời gọi hàm phải là “~nda” mới đúng haha

 
girr311 2025-11-19

Xem rất hay.

 
smc0478 2025-11-19

Cảm ơn bạn.

 
ifmkl 2025-11-19

Tôi lại bồi hồi nhớ đến hồi từng làm mấy thứ tương tự trong giờ học trình biên dịch ở đại học.

 
smc0478 2025-11-19

Tôi vẫn chưa học, nhưng thấy rất đáng mong đợi.

 
beoks 2025-11-19

Ủa, nhìn tên các file lexer, parser thì có vẻ bạn đã học về compiler rồi chứ, không phải sao?

 
smc0478 2025-11-19

À, vì mình vẫn mới là sinh viên năm 3 đại học, chưa học môn trình biên dịch mà tự học để làm, với lại vì muốn làm nhanh nên mình học và phát triển theo kiểu chắp vá như vậy.

 
futurist 2025-11-19

Đây là một thử nghiệm rất hay!! Rất thú vị haha
Tôi có cảm giác như bạn đã suy nghĩ rất nhiều để diễn đạt một cách tự nhiên.

 
smc0478 2025-11-19

Cảm ơn bạn.

 
rkttu 2025-11-26

Đã có những nỗ lực ở cấp độ cộng đồng nhằm chọn tiếng Hàn làm ngôn ngữ lập trình, nên chợt nhớ ra và để lại link này. haha

https://namu.wiki/w/%EC%B0%BD%EC%A1%B0(%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D%20%EC%96%B8%EC%96%B4)

 
smc0478 2025-11-26

Tự làm rồi tìm hiểu thêm mới thấy có khá nhiều thử nghiệm thú vị.
Một trong những cái để lại ấn tượng với tôi là liên kết bên dưới; việc biểu diễn cả số bằng tiếng Hàn cũng khá vui.
https://github.com/recu3125/malC_lang