# Show GN: 한국어로 작성하는 프로그래밍 언어 kol

> Clean Markdown view of GeekNews topic #24457. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=24457](https://news.hada.io/topic?id=24457)
- GeekNews Markdown: [https://news.hada.io/topic/24457.md](https://news.hada.io/topic/24457.md)
- Type: show
- Author: [smc0478](https://news.hada.io/@smc0478)
- Published: 2025-11-19T09:09:37+09:00
- Updated: 2025-11-19T09:09:37+09:00
- Original source: [github.com/smc0478](https://github.com/smc0478/kol)
- Points: 19
- Comments: 29

## Summary

한국어 문장 그대로 코드를 작성할 수 있는 실험적 언어 **kol**이 공개되었습니다. `"안녕 세상!"을 출력한다.`처럼 자연어 구문으로 **변수, 조건, 반복, 함수, 구조체, 클래스**를 표현할 수 있어, 프로그래밍 언어 설계나 파서 구현을 공부하는 개발자에게 흥미로운 참고 사례가 됩니다. **Python 기반 패키지(pip install korean-lang)**로 손쉽게 실행할 수 있으며, 한국어 문법을 코드로 옮기는 과정에서의 제약과 표현상의 고민이 언어 설계의 본질을 다시 생각하게 만듭니다. 언어 실험과 창의적 코딩에 관심 있는 분이라면 한 번쯤 실행해볼 만한 프로젝트입니다.

## Topic Body

안녕하세요.   
한국어로 작성하는 프로그래밍 언어를 만들었습니다.  
  
### 제작 이유  
- 엄랭이나 아희같은 한글로 작성하는 프로그래밍 언어를 보고 한국어로 자연스럽게 코딩을 해보고 싶었습니다.   
- 나중에 제대로된 언어를 만들기 위한 공부입니다.  
  
### 설치  
```  
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로 팩토리얼을_구한 것을 출력한다.   
```  
#### 구조체  
- 구조체는 c언어의 struct랑 비슷합니다.   
```  
구조 사람은 다음  
    변수 이름이 있다.  
    변수 나이가 있다.  
값을 가진다.  
  
철수는 사람이 된다.  
철수의 이름은 "철수다"가 된다.  
철수의 이름을 출력한다.   
```  
  
#### 클래스  
- 유형은 다른 언어의 클래스입니다.  
```  
유형 동물은 다음  
    변수 이름이 있다.  
    
    함수 소리를_낸다는 다음  
        동물의 이름과 "이(가) 소리를 냅니다."를 더한 것을 출력한다.  
    문단을 실행한다.  
값을 가진다.  
  
강아지는 동물이 된다.  
강아지의 이름은 "바둑이"가 된다.  
강아지 안에서 소리를_낸다.   
```  
### 아쉬운 점  
- 배열처럼 한국어로 자연스럽지 않은 어색한 문법이 있어서 아쉽습니다.  
- 클래스를 한국어로 유형으로 번역하긴 했는데 이보다 좋은 단어가 있을 것 같아서 나중에 알게되면 바꾸려고 합니다.  
  
### 마무리  
쓸모가 있지도 않고 내부 코드도 2주안으로 빠르게 짜느라 코드가 더럽지만 재밌게 봐주세요.  
봐주셔서 감사합니다.

## Comments



### Comment 46824

- Author: qlghwp123
- Created: 2025-11-26T20:18:22+09:00
- Points: 1

정말 멋진거 같습니다 ! 응원합니다.

### Comment 46833

- Author: smc0478
- Created: 2025-11-26T21:09:37+09:00
- Points: 1
- Parent comment: 46824
- Depth: 1

감사합니다.

### Comment 46820

- Author: oktroco
- Created: 2025-11-26T15:40:08+09:00
- Points: 1

영어와 수학이 익숙하지 않은 사람들을 위한 교육용으로도 좋을 것 같습니다.  
"if, for, while, ="등의 기호 없이, 한글로 컴퓨팅적 사고를 잘 설명할 수 있는 게, 교육적으로 굉장한 장점같습니다.  
너무 좋은 아이디어같습니다!

### Comment 46830

- Author: smc0478
- Created: 2025-11-26T21:02:17+09:00
- Points: 1
- Parent comment: 46820
- Depth: 1

감사합니다. 확실히 한글로 하니깐 영어보단 잘 읽히는 부분도 있는거 같습니다.

### Comment 46818

- Author: cronex
- Created: 2025-11-26T15:28:05+09:00
- Points: 1

배열은 굳이 다음이라는 딜리미터를 안쓰고 comma 를 써도 됐을 거 같습니다.   
그리고 배열이 구조체/클래스 , 배열 혹은 딕셔너리도 포함할 수 있는 구조인지가 궁금합니다.

### Comment 46831

- Author: smc0478
- Created: 2025-11-26T21:02:55+09:00
- Points: 1
- Parent comment: 46818
- Depth: 1

당시에 목표가 진짜 한글만 쓰고 최대한 영어, punctuation 들은 배제하자가 목표였어서 안 쓰긴 했는데 확실히 comma는 넣는게 더 자연스러울 것 같습니다. 나중에 추가해보도록 하겠습니다.  
  
그리고 배열은 모든 타입의 데이터를 담을 수 있는 구조로 설계를 했습니다. 안되면 버그입니다. ㅠㅠ

### Comment 46816

- Author: t7vonn
- Created: 2025-11-26T15:15:27+09:00
- Points: 1

재밌네요

### Comment 46828

- Author: smc0478
- Created: 2025-11-26T20:53:56+09:00
- Points: 1
- Parent comment: 46816
- Depth: 1

감사합니다.

### Comment 46815

- Author: tesla52
- Created: 2025-11-26T15:12:23+09:00
- Points: 1

흥미롭네요 . 좋은 영감이 떠올랐는데 사이드 프로젝트로 해봐야겠네요

### Comment 46827

- Author: smc0478
- Created: 2025-11-26T20:53:49+09:00
- Points: 1
- Parent comment: 46815
- Depth: 1

좋습니다. 기대하겠습니다.

### Comment 46680

- Author: softer
- Created: 2025-11-23T02:30:38+09:00
- Points: 1

오오 .. 응원합니다

### Comment 46826

- Author: smc0478
- Created: 2025-11-26T20:53:39+09:00
- Points: 1
- Parent comment: 46680
- Depth: 1

감사합니다.

### Comment 46665

- Author: kornet
- Created: 2025-11-22T06:51:44+09:00
- Points: 1

+-=$& 같은 특수문자를 다른 언어보다 덜 써서 좋군요. 작은 휴대 기기의 키보드에서는 특수문자 입력이 힘들거든요.

### Comment 46825

- Author: smc0478
- Created: 2025-11-26T20:53:27+09:00
- Points: 1
- Parent comment: 46665
- Depth: 1

오 그런 장점이 있네요 감사합니다.

### Comment 46564

- Author: nottiger
- Created: 2025-11-19T20:39:11+09:00
- Points: 1

너무 좋습니다...

### Comment 46585

- Author: smc0478
- Created: 2025-11-20T13:24:06+09:00
- Points: 1
- Parent comment: 46564
- Depth: 1

감사합니다.

### Comment 46539

- Author: roxie
- Created: 2025-11-19T12:50:46+09:00
- Points: 1

개인적인 선호 차이겠지만, “된다“ 보다 “이다“ 가 좋았을것 같습니다

### Comment 46543

- Author: smc0478
- Created: 2025-11-19T14:04:22+09:00
- Points: 1
- Parent comment: 46539
- Depth: 1

원래 초기에는 변수 할당은 `가는 ~이다.` 였습니다. 근데 개발할때 "이다/다"를 함수 호출에도 써서 표현식 파싱 하는게 애매해져서 "된다"로 바꿨습니다. 나중에 "이다"로 파싱할 수 있게 해보려 시도 해볼 거 같습니다.

### Comment 46562

- Author: roxie
- Created: 2025-11-19T18:04:54+09:00
- Points: 1
- Parent comment: 46543
- Depth: 2

그렇네요 함수 호출이 “~ㄴ다“ 여야 할 것 같습니다 ㅋㅋ

### Comment 46537

- Author: girr311
- Created: 2025-11-19T11:38:40+09:00
- Points: 1

잘봤습니다.

### Comment 46542

- Author: smc0478
- Created: 2025-11-19T13:58:15+09:00
- Points: 1
- Parent comment: 46537
- Depth: 1

감사합니다.

### Comment 46521

- Author: ifmkl
- Created: 2025-11-19T10:09:51+09:00
- Points: 1

대학교 컴파일러 수업시간에 비슷한거 하곤 했던 기억이 새록새록 나네요.

### Comment 46526

- Author: smc0478
- Created: 2025-11-19T10:22:32+09:00
- Points: 1
- Parent comment: 46521
- Depth: 1

아직 배우진 않았는데 기대되네요.

### Comment 46555

- Author: beoks
- Created: 2025-11-19T15:32:57+09:00
- Points: 1
- Parent comment: 46526
- Depth: 2

오잉 lexer, parser 파일 명칭을 보면 컴파일러 공부를 하신 것 같은데 아닌가요?

### Comment 46558

- Author: smc0478
- Created: 2025-11-19T15:47:47+09:00
- Points: 1
- Parent comment: 46555
- Depth: 3

아 제가 아직 대학교 3학년이라 컴파일러 수업을 듣지 않고 독학하며 만든 거기도 하고 빠르게 만드려고 야매로 학습하고 개발해서 그렇습니다.

### Comment 46515

- Author: futurist
- Created: 2025-11-19T09:42:14+09:00
- Points: 1

멋진 시도네요!! 재밌습니다 ㅎㅎ  
자연스럽게 표현하기 위한 고민을 많이 하신 것 같다는 느낌입니다.

### Comment 46516

- Author: smc0478
- Created: 2025-11-19T09:56:56+09:00
- Points: 2
- Parent comment: 46515
- Depth: 1

감사합니다.

### Comment 46821

- Author: rkttu
- Created: 2025-11-26T15:49:12+09:00
- Points: 2

한국어를 프로그래밍 언어로 채택하려는 시도는 커뮤니티 차원에서 계속해서 있어왔는데, 이게 생각나서 링크 달아봅니다. ㅎㅎ  
  
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)

### Comment 46832

- Author: smc0478
- Created: 2025-11-26T21:09:27+09:00
- Points: 1
- Parent comment: 46821
- Depth: 1

만들고 찾아보니 재밌는 시도들이 많더군요.  
인상 깊은 것들 중 하나가 아래 링크인데 숫자도 한글로 표현해서 재밌었어요.  
https://github.com/recu3125/malC_lang
