19 คะแนน โดย smc0478 2025-11-19 | 29 ความคิดเห็น | แชร์ทาง WhatsApp

สวัสดีครับ
ผมได้สร้างภาษาโปรแกรมที่เขียนด้วยภาษาเกาหลีขึ้นมา

เหตุผลที่สร้าง

  • ผมเห็นภาษาโปรแกรมที่เขียนด้วยฮันกึลอย่าง Umjeng หรือ Aheui แล้วอยากลองเขียนโค้ดด้วยภาษาเกาหลีให้เป็นธรรมชาติ
  • เป็นการศึกษาเพื่อสร้างภาษาที่สมบูรณ์จริงจังขึ้นในภายหลัง

การติดตั้ง

pip install korean-lang  

ประเภทของไวยากรณ์

ผมได้สร้างไวยากรณ์แบบที่แนะนำไว้ด้านล่าง
หากต้องการรายละเอียดเพิ่มเติม กรุณาดูที่ลิงก์ github ของผม

การแสดงผล

"안녕 세상!"을 출력한다.  

ตัวแปร

  • ชื่อตัวแปรประกอบด้วยตัวอักษรเกาหลี ( แบบนี้ใช้ไม่ได้), _ และตัวเลข
  • ตัวแปรสามารถเก็บจำนวนเต็ม สตริง อาร์เรย์ ดิกชันนารี เป็นต้น
정수는 1이 된다.  
소수는 3.141592가 된다.  
이름은 "홍길동"이 된다.  
참값은 참이 된다.  
빈값은 없음이 된다.  
숫자_배열은 [1 다음 2 다음 3 다음 4]이 된다.  
사람_정보는 {"이름"은 "김철수" 또 "나이"는 25}이 된다.  

เงื่อนไข

  • 만약 ... 이면/면, 아니고 만약 ... 이면/면, 아니면 ... 이면/면 ทำงานคล้าย if, else if, else และจะเรียกใช้ 다음 ... 문단을 실행한다.
나이는 입력한 것을 정수로_변환한 것이 된다.  
  
만약 나이가 18보다 크거나 같다면 다음  
    "성인입니다."를 출력한다.  
문단을 실행한다.  
아니고 만약 나이가 13보다 크다 또는 나이가 13랑 같다면 다음  
    "청소년입니다."를 출력한다.  
문단을 실행한다.  
아니면 다음  
    "어린이입니다."를 출력한다.  
문단을 실행한다  

ลูป

  • 계속 ... 인 동안 คล้ายกับ while และจะเรียกใช้ 다음 ... 문단을 반복한다.
  • ...에 있는 각 항목들을 ...로 가져와 คือ for ... in ... และจะเรียกใช้ 다음 ... 문단을 반복한다.
숫자는 0이 된다.  
계속 숫자가 5보다 작다인 동안 다음  
    숫자를 출력한다.  
    숫자는 숫자와 1을 더한 것이 된다.  
문단을 반복한다.  
  
배열은 [10 다음 20 다음 30]이 된다.  
배열에 있는 각 항목들을 숫자로 가져와 다음  
    숫자를 출력한다.  
문단을 반복한다.  

ฟังก์ชัน

  • 함수 ...는 (...과 ...로) คือส่วนที่ใช้กำหนดฟังก์ชัน และ 다음 ... 문단을 실행한다. คือส่วนที่ใช้รันฟังก์ชัน
  • เรียกใช้ฟังก์ชันในรูปแบบ ...과/와 ...을/를 ... 로/으로 ...한다./다.
함수 팩토리얼을_구한다는 가로 다음  
    만약 가가 0이랑 같다면 다음  
        결과 값은 1이 된다. 그리고 끝난다.  
    문단을 실행한다.  
    결과 값은 가와 ((가를 1로 뺀 것)으로 팩토리얼을_구한 것)을 곱한 것이 된다.   
    그리고 끝난다.  
문단을 실행한다.  
  
4로 팩토리얼을_구한 것을 출력한다.   

โครงสร้าง

  • โครงสร้างคล้ายกับ struct ของภาษา C
구조 사람은 다음  
    변수 이름이 있다.  
    변수 나이가 있다.  
값을 가진다.  
  
철수는 사람이 된다.  
철수의 이름은 "철수다"가 된다.  
철수의 이름을 출력한다.   

คลาส

  • 유형 คือคลาสในภาษาอื่น
유형 동물은 다음  
    변수 이름이 있다.  
    
    함수 소리를_낸다는 다음  
        동물의 이름과 "이(가) 소리를 냅니다."를 더한 것을 출력한다.  
    문단을 실행한다.  
값을 가진다.  
  
강아지는 동물이 된다.  
강아지의 이름은 "바둑이"가 된다.  
강아지 안에서 소리를_낸다.   

จุดที่น่าเสียดาย

  • มีไวยากรณ์ที่ยังฟังไม่เป็นธรรมชาติในภาษาเกาหลี เช่นแบบของอาร์เรย์ ซึ่งน่าเสียดายอยู่เหมือนกัน
  • ผมแปลคลาสเป็นคำว่า 유형 ในภาษาเกาหลี แต่คิดว่าน่าจะมีคำที่ดีกว่านี้อยู่ ถ้ารู้ภายหลังก็ว่าจะเปลี่ยน

ปิดท้าย

มันอาจไม่ได้มีประโยชน์มากนัก และโค้ดภายในก็เขียนแบบเร่ง ๆ ภายใน 2 สัปดาห์จนค่อนข้างเลอะเทอะ แต่หวังว่าจะอ่านกันอย่างสนุกนะครับ
ขอบคุณที่อ่านครับ

29 ความคิดเห็น

 
qlghwp123 2025-11-26

ดูเจ๋งมากจริง ๆ! เป็นกำลังใจให้ครับ

 
smc0478 2025-11-26

ขอบคุณครับ

 
oktroco 2025-11-26

ดูเหมือนว่าจะเหมาะมากสำหรับใช้เป็นสื่อการสอนสำหรับคนที่ไม่คุ้นเคยกับภาษาอังกฤษและคณิตศาสตร์ด้วย
การที่สามารถอธิบายแนวคิดเชิงคอมพิวเตอร์ได้ดีด้วยภาษาเกาหลี โดยไม่ต้องใช้สัญลักษณ์อย่าง if, for, while, = นั้น ดูจะเป็นข้อได้เปรียบด้านการศึกษาอย่างมาก
ดูเป็นไอเดียที่ดีมากจริง ๆ!

 
smc0478 2025-11-26

ขอบคุณครับ แน่นอนว่าเมื่อทำเป็นภาษาเกาหลี ก็ดูเหมือนว่าจะมีบางส่วนที่อ่านได้ง่ายกว่าภาษาอังกฤษครับ

 
cronex 2025-11-26

สำหรับอาร์เรย์ ผมคิดว่าไม่จำเป็นต้องใช้ตัวคั่นว่า 다음 ก็ได้ ใช้ comma ก็น่าจะพอแล้วครับ
แล้วก็สงสัยว่าอาร์เรย์เป็นโครงสร้างที่สามารถรวม struct/class, อาร์เรย์ หรือ dictionary ไว้ภายในได้ด้วยหรือเปล่าครับ

 
smc0478 2025-11-26

ตอนนั้นเป้าหมายคือให้ใช้แค่ภาษาเกาหลีล้วน ๆ และพยายามตัดภาษาอังกฤษกับเครื่องหมายวรรคตอนออกให้มากที่สุด เลยไม่ได้ใส่มา แต่คิดว่าใส่ comma จะดูเป็นธรรมชาติกว่าจริง ๆ ครับ เดี๋ยวจะลองเพิ่มเข้าไปภายหลังครับ。

แล้วก็ array ถูกออกแบบให้เป็นโครงสร้างที่เก็บข้อมูลได้ทุกประเภท ถ้าใช้ไม่ได้ถือว่าเป็นบั๊กครับ T_T

 
t7vonn 2025-11-26

น่าสนุกดีนะ

 
smc0478 2025-11-26

ขอบคุณครับ

 
tesla52 2025-11-26

น่าสนใจนะครับ มีไอเดียดี ๆ ผุดขึ้นมาแล้ว คงต้องลองทำเป็นโปรเจกต์เสริมดูครับ

 
smc0478 2025-11-26

ดีมากครับ รอติดตามนะครับ

 
softer 2025-11-23

โอ้.. ขอเป็นกำลังใจให้นะครับ

 
smc0478 2025-11-26

ขอบคุณครับ

 
kornet 2025-11-22

ดีเลยที่ใช้สัญลักษณ์พิเศษอย่าง +-=$& น้อยกว่าภาษาอื่น ๆ เพราะบนคีย์บอร์ดของอุปกรณ์พกพาขนาดเล็ก การพิมพ์สัญลักษณ์พิเศษทำได้ลำบาก

 
smc0478 2025-11-26

โอ้ มีข้อดีแบบนั้นอยู่ด้วย ขอบคุณครับ

 
nottiger 2025-11-19

ดีมากเลย...

 
smc0478 2025-11-20

ขอบคุณครับ

 
roxie 2025-11-19

อาจเป็นความชอบส่วนบุคคลที่ต่างกัน แต่ผมคิดว่าใช้ “da” น่าจะดีกว่า “doenda”

 
smc0478 2025-11-19

เดิมทีในช่วงแรก การกำหนดค่าตัวแปรใช้ 가는 ~이다. แต่พอพัฒนาจริงก็ใช้ "ida/da" กับการเรียกฟังก์ชันด้วย ทำให้การพาร์ส expression กำกวม เลยเปลี่ยนเป็น "doenda" ครับ/ค่ะ ภายหลังน่าจะลองพยายามทำให้พาร์สด้วย "ida" ได้ด้วย

 
roxie 2025-11-19

จริงด้วยนะครับ คิดว่าการเรียกใช้ฟังก์ชันน่าจะต้องเป็น “~nda“ ฮ่าๆ

 
girr311 2025-11-19

อ่านได้เพลินดีครับ

 
smc0478 2025-11-19

ขอบคุณครับ

 
ifmkl 2025-11-19

ชวนให้นึกถึงความทรงจำขึ้นมาทันทีเลยว่า ตอนเรียนวิชาคอมไพเลอร์ในมหาวิทยาลัยก็เคยทำอะไรคล้าย ๆ กัน

 
smc0478 2025-11-19

ยังไม่ได้ลองเรียนรู้ แต่ก็น่าตื่นเต้นนะครับ

 
beoks 2025-11-19

เอ๊ะ ดูจากชื่อไฟล์ lexer กับ parser แล้ว เหมือนคุณน่าจะเคยศึกษาคอมไพเลอร์มาบ้าง ไม่ใช่เหรอ?

 
smc0478 2025-11-19

อ๋อ คือผมยังเป็นนักศึกษาปี 3 อยู่เลย ยังไม่ได้เรียนวิชาคอมไพเลอร์ แล้วก็ทำอันนี้ขึ้นมาจากการศึกษาด้วยตัวเอง แถมอยากทำให้เสร็จเร็วเลยเรียนกับพัฒนาแบบลุย ๆ ไปหน่อยครับ

 
futurist 2025-11-19

เป็นความพยายามที่ยอดเยี่ยมมากเลย!! สนุกดีครับ
ให้ความรู้สึกว่าได้ใส่ใจคิดมาเยอะมากเพื่อให้สื่อออกมาได้อย่างเป็นธรรมชาติ

 
smc0478 2025-11-19

ขอบคุณครับ

 
rkttu 2025-11-26

ความพยายามที่จะนำภาษาเกาหลีมาใช้เป็นภาษาโปรแกรมนั้นมีมาอย่างต่อเนื่องในระดับชุมชน เลยนึกขึ้นได้เลยเอาลิงก์มาฝากครับ 555

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

พอลองสร้างแล้วค้นหาดู ก็พบว่ามีความพยายามที่น่าสนใจอยู่เยอะเลย
หนึ่งในสิ่งที่ประทับใจคือ ลิงก์ด้านล่างนี้ ซึ่งสนุกดีที่แม้แต่ตัวเลขก็เขียนเป็นภาษาเกาหลีด้วย
https://github.com/recu3125/malC_lang