Skip to content

KingSejong 프로그래밍 언어 - 프로젝트 개요 ​

세종대왕의 정신을 계승한 혁신적인 한글 프로그래밍 언어

언어명: KingSejong 파일 확장자: .ksj현재 버전: v0.5.0 (Phase 8 완료) 저장소: https://github.com/kingsejong-lang/kingsejong-lang테스트: 1,503개 (100% 통과)


프로젝트 배경 ​

기존 프로젝트의 한계 ​

원본 프로젝트 (KoreanLanguage):

  • 단순히 Python/JavaScript 키워드를 한글로 번역
  • 한글의 언어적 특성 미활용
  • 라이센스 미지정으로 법적 문제

KingSejong의 차별점 (✅ 이미 구현됨) ​

혁신적 접근:

  1. ✅ 한글의 교착어 특성 활용 (조사 기반 문법)
  2. ✅ 자연어 수준의 가독성
  3. ✅ Python/JavaScript의 단점 개선
  4. ✅ 교육에 최적화된 설계
  5. ✅ 평가기와 동치인 바이트코드 VM (--vm)
  6. ✅ LSP, 디버거, VS Code 확장

언어 이름의 의미 ​

KingSejong (킹세종) ​

세종대왕의 정신 계승:

  • 훈민정음 창제 (1443년) - "백성을 가르치는 바른 소리"
  • 과학적이고 체계적인 문자 체계
  • 교육과 계몽의 정신

KingSejong 언어의 목표 (✅ 달성):

  • ✅ 한글로 프로그래밍을 배우는 장벽 제거
  • ✅ 세종대왕처럼 "백성(초보자)을 가르치는" 언어
  • ✅ 한글의 우수성을 프로그래밍에 적용
  • ✅ 실용적인 개발 도구 제공 (LSP, 디버거, VS Code)

핵심 혁신 기능 (✅ 구현 완료) ​

1. 조사 기반 메서드 체인 ✅ ​

기존 언어 (Python/JavaScript):

javascript
user.getName().toUpperCase().split();
// "user의 getName의 toUpperCase의 split" - 부자연스러움

KingSejong (✅ 구현 완료):

ksj
사용자의 이름을 대문자로 바꾸고 공백으로 나눈다

# 구현 완료된 예시
배열을 정렬한다
문자열을 쉼표로 나눈다
숫자들에서 짝수만 걸러낸다

혁신성 (이미 구현됨):

  • ✅ 조사(을/를, 로, 의)가 문법 관계 명시
  • ✅ 읽는 순서 = 실행 순서
  • ✅ 한국어 화자에게 극도로 자연스러움
  • ✅ JosaExpression AST 노드로 구현

2. 자연스러운 범위 표현 ✅ ​

기존 언어의 문제:

python
# Python - 혼란스러움
range(1, 10)  # 1~9 (10은 포함 안됨!)
list[0:5]     # 0~4 (5는 포함 안됨!)

KingSejong (✅ 구현 완료):

ksj
1부터 10까지      # 1, 2, 3, ..., 10 (10 포함!)
1부터 10미만      # 1, 2, 3, ..., 9
1초과 10이하      # 2, 3, 4, ..., 10

# 반복문
반복 (i가 1부터 10까지) {
    출력(i)  # 정확히 10번 실행
}

# 배열 슬라이싱 (구현 완료)
배열[첫번째부터 다섯번째까지]  # 5개 포함

교육적 가치 (달성):

  • ✅ 수학 표기법과 완벽히 일치
  • ✅ 초보자 혼란 완전 제거
  • ✅ 일상 언어와 동일
  • ✅ RangeExpression AST 노드로 구현

3. Async/Await 비동기 처리 ✅ ​

기존 언어:

javascript
async function getData() {
  const response = await fetch(url);
  const data = await response.json();
  return data;
}

KingSejong (✅ 구현 완료):

ksj
비동기_함수 데이터_가져오기() {
    응답 = API_호출()를_기다린다
    데이터 = 응답_처리()를_기다린다
    반환 데이터
}

장점 (구현됨):

  • ✅ async/await 키워드 지원
  • ✅ AsyncFunctionLiteral, AwaitExpression AST 노드
  • ✅ Promise 기반 비동기 처리
  • ✅ 자연스러운 한글 표현

4. 명확한 타입 시스템 ✅ ​

기존 언어의 혼란:

javascript
// JavaScript
5 + "3"   // "53" (문자열)
5 - "3"   // 2 (숫자)
[] + {}   // ???

KingSejong (✅ 구현 완료):

ksj
정수 나이 = 15
문자열 이름 = "철수"
실수 키 = 175.5

나이 + 이름  # 에러: 정수와 문자열은 더할 수 없습니다
나이를_문자열로() + 이름  # OK: "15철수"

5. 값 없음의 명확화 ✅ ​

기존 언어:

javascript
null, undefined, NaN, 0, false, ''; // 너무 많음

KingSejong (✅ 구현 완료):

ksj
값 = 없음  # 단일 개념

만약 (값이 없으면) {
    출력("값이 없습니다")
}

결과 = 값 또는 "기본값"

6. 직관적 반복문 ✅ ​

KingSejong (✅ 구현 완료):

ksj
# 횟수 반복
10번 반복한다 {
    출력("안녕")
}

# 범위 반복
i가 1부터 10까지 반복한다 {
    출력(i)
}

# 컬렉션 반복
항목들 각각에 대해 항목으로 {
    출력(항목)
}

실제 코드 예시 (모두 동작함) ​

Hello World ​

ksj
출력("안녕하세요, KingSejong!")

변수와 타입 ​

ksj
정수 나이 = 15
문자열 이름 = "김철수"
실수 키 = 175.5

출력(이름 + "님의 나이는 " + 나이를_문자열로() + "세입니다")

조건문 ​

ksj
만약 (나이가 18이상) {
    출력("성인입니다")
} 아니면 {
    출력("미성년자입니다")
}

# 또는
만약 (나이 >= 18) {
    출력("성인입니다")
} 아니면 {
    출력("미성년자입니다")
}

반복문 ​

ksj
# 방법 1: 횟수
5번 반복한다 {
    출력("안녕")
}

# 방법 2: 범위
i가 1부터 5까지 반복한다 {
    출력(i)
}

# 방법 3: 컬렉션
숫자들 = [1, 2, 3, 4, 5]
숫자들 각각에 대해 숫자로 {
    출력(숫자)
}

함수 ​

ksj
함수 인사하기(이름) {
    반환 "안녕하세요, " + 이름 + "님!"
}

메시지 = 인사하기("철수")
출력(메시지)

# 타입 지정
함수 덧셈(a: 정수, b: 정수) -> 정수 {
    반환 a + b
}

배열 처리 (조사 활용) ​

ksj
숫자들 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# 방법 1: 자연어처럼
짝수들 = 숫자들에서 짝수만 걸러낸다
제곱들 = 짝수들을 각각 제곱한다

# 방법 2: 체인
결과 = 숫자들에서 짝수만_걸러내고 각각을_제곱한다

# 방법 3: 명시적 반복 (초보자용)
결과 = []
숫자들 각각에 대해 숫자로 {
    만약 (숫자가 짝수이면) {
        결과에 숫자^2를 추가
    }
}

에러 처리 ​

ksj
시도 {
    결과 = 10 / 0
} 에러나면 {
    출력("0으로 나눌 수 없습니다")
}

# 또는 간결하게
결과 = (10 / 0) 또는_에러시 "계산불가"

기술 스택 (✅ 구현 완료) ​

언어 구현 ​

  • 언어: C++23
  • 빌드: CMake 3.21+
  • 아키텍처: ✅ tree-walking 평가기 + Bytecode VM (값 의미 공유)
  • GC: ✅ 세대별 가비지 컬렉터 (Young/Old Generation)
  • 테스트: GoogleTest (1,503개 테스트, 100% 통과)

구성 요소 (모두 구현됨) ​

kingsejong-lang/
├── lexer/          ✅ 어휘 분석 (조사 인식 포함)
├── parser/         ✅ 구문 분석 (조사 체인, 범위 표현)
├── ast/            ✅ 추상 구문 트리
├── evaluator/      ✅ 실행 엔진
├── types/          ✅ 타입 시스템
├── error/          ✅ 에러 처리
├── module/         ✅ 모듈 시스템
├── lsp/            ✅ Language Server Protocol
├── debugger/       ✅ 디버거
├── jit/            ✅ JIT 컴파일러
├── linter/         ✅ 정적 분석기
├── stdlib/         ✅ 표준 라이브러리 (.ksj 파일, 14개 모듈)
├── repl/           ✅ 대화형 환경
└── tests/          ✅ 테스트 (1,503개)

개발 로드맵 ​

✅ Phase 0-8: 완료 (2025-11-20) ​

Phase 0: 프로젝트 초기화 ✅

  • [x] 프로젝트 구조 설계
  • [x] Lexer/Parser 기본 구조
  • [x] 조사 인식 시스템
  • [x] 테스트 프레임워크

Phase 1: 핵심 차별화 기능 ✅

  1. [x] 조사 기반 메서드 체인
  2. [x] 자연스러운 범위 표현 (1부터 10까지)
  3. [x] 명확한 타입 시스템 (정수 나이)
  4. [x] 기본 타입 (정수, 실수, 문자열, 불린)
  5. [x] 조건문 (if/else)
  6. [x] 반복문 (for, while)
  7. [x] 함수 정의/호출
  8. [x] 표준 라이브러리 (출력, 입력)

Phase 2-7: 고급 기능 ✅ 9. [x] 배열/리스트 10. [x] Async/Await 비동기 11. [x] Try/Catch/Finally 12. [x] 패턴 매칭 13. [x] 파일 I/O 14. [x] 모듈 시스템 15. [x] 바이트코드 컴파일러 (56개 OpCode) 16. [x] JIT Compiler Tier 1 17. [x] 세대별 GC 18. [x] 디버거 19. [x] LSP 20. [x] Linter & Formatter 21. [x] VS Code 확장 22. [ ] ksjpm 패키지 관리자 (2026-10 제거: 저장소·다운로드 없는 뼈대)

Phase 8: 코드 품질 및 문서화 ✅

  • [x] Doxygen 설정
  • [x] USER_GUIDE.md
  • [x] regression_test.py
  • [x] 1,503개 테스트 (100% 통과)

📝 Phase 9 이후: 계획 중 ​

Phase 9: 리팩토링 및 최적화

  • [ ] 긴 함수 리팩토링 (VM, Evaluator)
  • [ ] Incremental GC 구현
  • [ ] 메모리 풀링 전략

장기 계획:

  • [ ] LLVM 백엔드 (선택)
  • [ ] 멀티스레딩 지원
  • [ ] 세미콜론 필수화 (v2.0.0)

핵심 차별점 요약 (✅ 모두 구현됨) ​

특징Python/JSKingSejong차별성상태
메서드 체인.method()을/를/로 활용조사로 관계 명확✅
범위 표현range(1,10) → 9까지1부터 10까지 → 10까지수학 표기 일치✅
비동기async/await비동기_함수, 기다린다Async/Await 지원✅
타입동적 (약함)정수 나이명시적✅
값 없음null/undefined/None없음단일 개념✅
반복for in range10번, 1부터 10까지자연어✅
에러try/except시도, 에러나면간결함✅
VMCPython (느림)Bytecode VM (--vm)고성능✅
도구별도 설치LSP, 디버거 내장통합 개발 환경✅

예상 사용 시나리오 ​

초등학교 교육 ​

ksj
# 1학년 - 기초
10번 반복한다 {
    출력("안녕하세요!")
}

# 4학년 - 구구단
단 = 정수(입력("몇 단?"))
i가 1부터 9까지 반복한다 {
    출력(단 + " x " + i + " = " + (단 * i))
}

중학교 교육 ​

ksj
# 알고리즘 - 피보나치
함수 피보나치(n: 정수) -> 정수 {
    만약 (n <= 1) {
        반환 n
    }
    반환 피보나치(n-1) + 피보나치(n-2)
}

i가 0부터 10까지 반복한다 {
    출력(피보나치(i))
}

고등학교 교육 ​

ksj
# 데이터 처리
학생들 = [
    {이름: "철수", 점수: 85},
    {이름: "영희", 점수: 92},
    {이름: "민수", 점수: 78}
]

우수학생들 = 학생들에서 (학생 -> 학생.점수 >= 80) 필터
우수학생들 각각에 대해 학생으로 {
    출력(학생.이름 + ": " + 학생.점수 + "점")
}

비교: 원본 vs Sejong ​

원본 프로젝트 (KoreanLanguage) ​

만약 (나이 >= 18) {
    출력("성인")
}
  • 단순 키워드 번역
  • Python/JS와 동일한 구조
  • 한글 특성 미활용

Sejong 프로젝트 ​

ksj
만약 (나이가 18이상) {
    출력("성인")
}

# 또는 더 자연스럽게
나이가 18이상이면 {
    "성인"을 출력한다
}
  • 조사 활용
  • 자연어 수준 표현
  • 한글 특성 극대화

프로젝트 목표 ​

✅ 단기 목표 (6개월) - 달성! ​

  1. ✅ 기본 인터프리터 완성
  2. ✅ 핵심 차별화 기능 구현
  3. ✅ 예제 프로그램 21개
  4. 🚧 온라인 플레이그라운드 (WebAssembly)

✅ 중기 목표 (1년) - 대부분 달성! ​

  1. ✅ 바이트코드 컴파일러
  2. ✅ 풍부한 표준 라이브러리 (14개 모듈, 182개 함수)
  3. 📝 교육 기관 파일럿 테스트
  4. 📝 커뮤니티 구축

📝 장기 목표 (2년) ​

  1. 📝 정식 교육 과정 통합
  2. ✅ JIT 컴파일러 Tier 1 (완료)
  3. ksjpm 패키지 관리자 (2026-10 제거)
  4. 📝 국제 확산 (한국어 학습자용)

라이센스 ​

MIT License ✅ ​

현재 라이센스: MIT License (적용 완료)

이유:

  • ✅ 교육용에 최적
  • ✅ 상업적 활용 허용
  • ✅ 커뮤니티 기여 활성화
  • ✅ 국제적으로 가장 널리 사용

저작권 표시:

MIT License

Copyright (c) 2025 KingSejong Programming Language Contributors

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction...

현재 상태 및 다음 단계 ​

✅ 현재 상태 (v0.5.0, Phase 8 완료) ​

  1. ✅ GitHub 저장소: https://github.com/kingsejong-lang/kingsejong-lang
  2. ✅ 프로젝트 구조: 완성됨
  3. ✅ Lexer/Parser: 조사 인식 시스템 포함 완성
  4. ✅ README 및 문서: 완전히 작성됨
  5. ✅ AST: 모든 노드 타입 구현
  6. ✅ 테스트 프레임워크: GoogleTest (1,503개 테스트)
  7. ✅ 예제: 21개 프로그램
  8. ✅ Evaluator: 실행 엔진 완성
  9. ✅ 타입 시스템: 정수 나이 완성
  10. ✅ 범위 표현: 1부터 10까지 완성
  11. ✅ Bytecode VM: 평가기와 같은 결과를 내는 두 번째 실행 엔진
  12. ✅ LSP + 디버거 + VS Code: 통합 개발 환경

📝 다음 Phase (9 이후) ​

Phase 9: 리팩토링 및 최적화

  • [ ] 긴 함수 리팩토링 (VM, Evaluator)
  • [ ] Incremental GC 구현
  • [ ] 메모리 풀링 전략
  • [ ] stdlib/http, stdlib/db 완성

v1.0.0 릴리스 준비:

  • [ ] 최종 안정화
  • [ ] 릴리스 노트 작성
  • [ ] 프로덕션 배포

참고 문서 ​

KingSejong 프로젝트의 상세 문서:

문서내용상태
LANGUAGE_DESIGN_PHILOSOPHY.md언어 설계 철학 및 핵심 아이디어✅
FEATURES.mdKingSejong 기능 명세✅
IMPLEMENTATION.mdKingSejong 구현 계획✅
../CONTRIBUTING.md개발 및 기여 가이드✅
../ROADMAP.md개발 로드맵 및 진행 상황✅
../TUTORIAL.md초보자 튜토리얼✅
../USER_GUIDE.md사용자 가이드✅

결론 ​

KingSejong은 단순히 영어 키워드를 한글로 바꾼 언어가 아닙니다.

세종대왕이 한글을 창제할 때 백성을 가르치려는 정신처럼, KingSejong 언어는 한글의 언어적 장점을 활용하여누구나 쉽게 프로그래밍을 배울 수 있는 혁신적인 언어입니다.

현재 상태: v0.5.0, Phase 8 완료

  • ✅ 핵심 기능 모두 구현
  • ✅ 1,503개 테스트 (100% 통과)
  • ✅ 14개 표준 라이브러리 모듈 (182개 함수)
  • ✅ LSP, 디버거, VS Code 확장
  • ✅ Bytecode VM (평가기와 동치)

"백성을 가르치는 바른 코드" - KingSejong Programming Language


저장소: https://github.com/kingsejong-lang/kingsejong-lang

MIT License