Han – Rust로 작성된 한국어 기반 컴파일형 프로그래밍 언어

1 week ago 10

  • 한글 키워드로 작성되는 정적 타입의 컴파일형 언어로, LLVM IR을 통해 네이티브 바이너리를 생성함
  • Rust로 구현된 컴파일러와 인터프리터를 모두 제공하며, hgl CLI로 빌드·실행·REPL·LSP 기능을 지원함
  • 함수, 만약, 반복, 변수 등 모든 키워드가 한국어이며, 변수명과 함수명도 한글로 정의 가능함
  • 파일 입출력, JSON, HTTP, 정규식, 날짜/시간, 시스템 호출 등 실용적 기능을 내장하고, 예제 18개를 포함함
  • 한글의 과학적 구조와 문화적 확산을 프로그래밍 언어로 구현해, 한국어 학습과 코딩을 결합한 새로운 시도로 주목받음

Han 언어 개요

  • Han은 한국어 키워드로 작성되는 정적 타입 컴파일 언어로, LLVM IR을 통해 네이티브 바이너리를 생성함
    • Rust로 작성된 컴파일러 툴체인트리 워킹 인터프리터를 포함
    • hgl 명령어로 인터프리터 실행, 빌드, REPL, LSP 서버 구동 가능
  • 모든 키워드가 한글로 구성되어 있으며, 예: 함수, 만약, 반복, 변수, 출력 등
  • 한글의 과학적 문자 체계를 프로그래밍 언어로 구현해, 언어적 아름다움과 기술적 정밀성의 결합을 목표로 함

주요 기능

  • 한글 키워드 및 식별자 지원: 변수명, 함수명, 구조체명 등을 한글로 작성 가능
  • 정적 타입 시스템: 정수, 실수, 문자열, 불, 없음의 5가지 기본 타입 제공
  • 컴파일 및 인터프리터 모드: LLVM IR → clang → 바이너리 생성 또는 즉시 실행
  • REPL 및 LSP 서버: hgl repl, hgl lsp 명령으로 대화형 실행과 코드 완성 지원
  • 내장 기능
    • 배열, 구조체, 클로저, 패턴 매칭, 예외 처리, 제네릭
    • 파일 I/O, JSON, HTTP, 정규식, 날짜/시간, 시스템 호출
    • 형식 문자열, 해시맵, 수학 내장 함수
  • 예제 프로그램 18개 포함: Hello World, HTTP API 호출 등

설치 및 실행

  • 필수 구성요소: Rust(1.70+), clang
  • 설치 절차
  • VS Code 확장 제공: 구문 강조 및 LSP 지원
  • CLI 명령어
    • hgl interpret <file.hgl> — 인터프리터 실행
    • hgl build <file.hgl> — 네이티브 바이너리 컴파일
    • hgl run <file.hgl> — 컴파일 후 즉시 실행
    • hgl repl — 대화형 모드
    • hgl lsp — LSP 서버 실행

현재 구현 상태

  • 완전 동작 기능
    • 데이터 타입, 제어 흐름, 함수, 문자열, 배열, 해시맵, 구조체, 오류 처리, 타입 검사
    • JSON, HTTP, 정규식, 날짜/시간, 시스템, 파일 I/O, 수학 함수, 모듈, 제네릭
  • 부분 구현 기능
    • hgl build 시 클로저·문자열·배열 메서드의 코드 생성은 미완성
  • 미구현 기능
    • Null 안전성(Option 타입 없음), 비동기/병렬 처리, 가비지 컬렉션, 꼬리 재귀 최적화

한글과 프로그래밍

  • 한글은 음운 구조를 시각적으로 표현한 과학적 문자 체계로, 세종대왕이 1443년에 창제
  • Han은 이러한 한글의 구조적 명료함을 코드 문법에 반영함
  • 전 세계적으로 1,600만 명 이상이 한국어를 학습 중이며, Han은 코딩을 통한 한글 학습 수단을 제공함
  • 예시 키워드
    • 함수(function), 만약(if), 반복(for), 반환(return), 변수(variable), 출력(print) 등

설계 및 구조

  • Rust 기반 컴파일러 파이프라인
    • Lexer → Parser → AST → Interpreter / CodeGen → LLVM IR → clang → Binary
  • 프로젝트 구조
    • src/ — 핵심 컴파일러 및 인터프리터 코드
    • editors/vscode/ — VS Code 확장
    • examples/, spec/, tests/ 포함
  • 설계 선택 이유
    • LLVM C API 대신 텍스트 기반 IR 생성으로 빌드 단순화
    • 인터프리터는 빠른 실행, 컴파일러는 성능 중심
    • Rust의 패턴 매칭과 메모리 안전성이 언어 구현에 적합

테스트 및 라이선스

  • cargo test로 46개 테스트(단위 41개, 통합 5개) 수행
  • MIT 라이선스로 공개됨

문화적 의의

  • Han은 한글의 아름다움과 프로그래밍의 정밀성을 결합한 실험적 언어
  • 한국어 학습자와 개발자 모두에게 언어와 코드의 경계를 허무는 새로운 접근을 제시함

Read Entire Article