Skip to content

zerojat7-ui/KoreanCode

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 

Repository files navigation

Kcode (KoreanCode)

한글 키워드로 작성하는 프로그래밍 언어
A programming language written entirely in Korean keywords.

License: MIT Language: C Version


소개

Kcode는 모든 키워드를 한글로 작성하는 프로그래밍 언어입니다.
인터프리터·C 코드 생성·LLVM IR 세 가지 실행 방식을 지원하며,
임베디드부터 AI 연동, GPU 가속까지 단일 언어로 다룰 수 있도록 설계되었습니다.

// hello.han — 첫 번째 Kcode 프로그램

헌법 안전:
    법령:  참
    법위반: 오류발생("계약 위반")
헌법끝

정의 인사(문자 이름 = "세상"):
    출력("안녕하세요, " + 이름 + "!")

인사()
인사("Kcode")

특징

🇰🇷 완전한 한글 문법

모든 예약어가 한글입니다. if 대신 만약, while 대신 동안, class 대신 객체.

⚡ 3중 실행 백엔드

방식 설명 용도
인터프리터 AST 직접 실행 빠른 개발·스크립팅
C 코드 생성 .han → C → 네이티브 임베디드·크로스 컴파일
LLVM IR 생성 .han → LLVM IR → 실행파일 고성능·최적화

📜 계약 시스템 (Design by Contract)

IEC 61508 / ISO 26262 수준의 안전 계약을 언어 차원에서 강제합니다.
계약 없는 파일은 컴파일이 거부됩니다.

헌법 안전정책:
    법령:  전류 < 10.0
    법위반: 긴급정지()
헌법끝

🖥️ GPU / NPU 가속

가속기 블록으로 행렬 연산을 GPU/NPU에 자동 위임합니다.

가속기:
    행렬곱(A, B) => 결과
가속기끝

🤖 AI 연동

Claude, OpenAI, Gemini, 로컬 LLM을 한 줄로 연결합니다.

AI 모델 = AI연결("claude", "api키")
글자 답변 = 모델.질문("안녕하세요")
글자 설명 = 모델.사진분석(사진원본, "이 사진을 설명해줘")

🔌 임베디드 지원

GPIO / I2C / SPI / UART / MODBUS / CAN / MQTT / ROS2를 내장 키워드로 제어합니다.

GPIO 핀 = GPIO연결(13)
핀.출력(참)

I2C 센서 = I2C연결(0x48)
실수 온도 = 센서.읽기()

자료형

키워드 설명 예시
정수 정수 (integer) 42, -7
실수 실수 (float) 3.14
문자 문자열 (string) "안녕"
글자 단일 문자 (char) '가'
논리 불리언 , 거짓
없음 null
배열 동적 배열 [1, 2, 3]
사전 키-값 쌍 {"키": "값"}
행렬 2D 배열 (AI용) [[0.1, 0.2], [0.3, 0.4]]
사진 이미지 파일 사진열기("photo.jpg")
그림 캔버스 그림만들기(800, 600)
함수형 람다 변수 (x) => x * x

문법 예제

기본 제어문

// 조건문
만약 점수 >= 90:
    출력("A 등급")
아니면 만약 점수 >= 80:
    출력("B 등급")
아니면:
    출력("C 이하")

// 반복문
반복 i 부터 1 까지 10:
    출력(i)

각각 값 안에 배열:
    출력(값)

함수

// 반환값 있는 함수
함수 더하기(정수 가, 정수 나):
    반환 가 + 나

// 반환값 없는 함수
정의 인사(문자 이름 = "손님"):
    출력("안녕하세요, " + 이름)

// 람다
함수형 제곱 = (정수 x) => x * x

객체

객체 사람:
    문자 이름
    정수 나이

    함수 생성(자신, 문자 이름, 정수 나이):
        자신.이름 = 이름
        자신.나이  = 나이

    정의 소개(자신):
        출력(자신.이름 + " / " + 자신.나이 + "살")

객체 학생 이어받기 사람:
    문자 학교

홍길동 = 사람("홍길동", 20)
홍길동.소개()

예외 처리

시도:
    실수 결과 = 10.0 / 입력("나눌 수: ")
    출력(결과)
실패시:
    출력("오류 발생")
항상:
    출력("계산 완료")

이미지 처리

사진 원본 = 사진열기("photo.jpg")
원본.크기조절(640, 480)
원본.흑백()
원본.경계선()
원본.저장("결과.jpg")

배열 얼굴들 = 원본.얼굴찾기()
출력("얼굴 수: " + 얼굴들.길이())

계약 시스템

// 헌법 — 전역 최상위 계약
헌법 안전정책:
    법령:  온도 < 85.0 그리고 전류 < 10.0
    법위반: 긴급정지()
헌법끝

// 법령/법위반 — 함수 단위 계약
함수 나누기(실수 가, 실수 나):
    법령:  나 != 0.0
    법위반: 오류발생("0으로 나눌 수 없습니다")
    반환 가 / 나

GPU 가속

#GPU사용

행렬 A = [[1.0, 2.0], [3.0, 4.0]]
행렬 B = [[5.0, 6.0], [7.0, 8.0]]

가속기:
    행렬곱(A, B) => 결과
    활성화(결과) => 출력값
가속기끝

출력(출력값)

임베디드 / IoT

헌법 IoT안전:
    법령:  온도 < 80.0
    법위반: 긴급정지()
헌법끝

I2C 온도센서 = I2C연결(0x48)
MQTT 브로커  = MQTT연결("192.168.1.1", 1883)
브로커.구독("센서/온도", 처리()
    출력("수신 완료")
처리끝)

타이머 1000ms:
    실수 온도 = 온도센서.읽기()
    브로커.발행("센서/온도", 글자(온도))
타이머끝

빌드

요구사항

  • GCC 또는 Clang (C11 이상)
  • CMake 3.16 이상
  • LLVM 14+ (LLVM 백엔드 사용 시)

CMake 빌드

git clone https://github.com/your-username/KoreanCode.git
cd KoreanCode
cmake -B build
cmake --build build

Makefile 빌드

make              # 인터프리터 빌드
make codegen      # C 코드 생성기 빌드
make llvm         # LLVM IR 생성기 빌드 (LLVM 필요)

실행

# 인터프리터 (바로 실행)
./kcode hello.han

# REPL (대화형 모드)
./kcode

# C 코드 생성
./kcode_gen hello.han

# LLVM IR 생성
./kcode_llvm hello.han

파일 확장자

확장자 용도
.han Kcode 소스 파일
.hg Kcode 헤더 파일

내장 함수

수학

절대  올림  내림  반올림  최대  최소
제곱  제곱근  로그  사인  코사인  탄젠트
난수  난정수  파이  자연e  무한대

문자열

길이  찾기  포함  시작  끝  자르기
바꾸기  분리  합치기  뒤집기  되풀이
대문자  소문자  다듬기  정수  실수  문자

파일 I/O

파일열기  파일닫기  파일읽기  파일쓰기
파일줄읽기  파일줄쓰기  파일전체읽기  파일전체쓰기
파일있음  파일크기  파일목록  파일지우기
파일복사  파일이동  폴더만들기

AI 수학

행렬곱  전치  역행렬  평균  분산  표준편차
시그모이드  렐루  소프트맥스  탄에이치

컴파일러 구조

.han 소스파일
      │
      ▼
  [렉서]  한글 키워드 → 토큰
      │
      ▼
  [파서]  토큰 → AST
      │
      ▼
  [계약 검증]  계약 없으면 컴파일 거부
      │
      ├──────────────┬──────────────┐
      ▼              ▼              ▼
 [인터프리터]   [C 코드 생성]   [LLVM IR 생성]
  즉시 실행      → gcc 연동      → 최적화 실행파일

설계 원칙

항목 결정 이유
포인터 없음 GC 자동 관리
메모리 GC 내장 (참조카운트 + 마크스윕) 사용 편의성
들여쓰기 Python 방식 가독성
계약 강제 (없으면 컴파일 거부) 안전성
외부 의존성 0 (순수 C 구현) 이식성
키워드 길이 3자 이내 권장 타이핑 편의성

로드맵

단계 내용 상태
렉서 / 파서 한글 토큰 + AST
인터프리터 트리 워킹 실행
C 코드 생성 AST → C
LLVM IR 생성 AST → LLVM IR
바이트코드 VM AST → VM 바이트코드
계약 시스템 헌법/법률/규정/법령/법위반
GPU 가속 TPU/NPU/GPU/CPU 폴백
임베디드 GPIO/I2C/SPI/UART/CAN/MODBUS
AI 연동 LLM API + 온톨로지
REPL 대화형 셸
WebAssembly 브라우저 실행
MCP 서버 AI 도구 프로토콜
Web IDE Monaco 편집기 + WASM 🔲 예정
패키지 생태계 레지스트리 + FFI 🔲 예정

라이선스

MIT License — 자유롭게 사용, 수정, 배포 가능합니다.


계약 없는 코드는 Kcode가 아니다.

About

KoreanCode (Kcode): A next-generation AI-centric programming language designed to make building and governing AI simple and safe, powered by a robust Contract System for autonomous control and high-performance C-backed execution.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors