Show HN: Han – Rustで書かれた韓国のプログラミング言語
46日前原文(github.com)
概要
Hanは、すべてのキーワードが韓国語(Hangul)で書かれた静的型付きコンパイル言語。
Rust製コンパイラでLLVM IRを生成し、即時実行用インタプリタも搭載。
REPLやLSPサーバーなど、現代的な開発体験をサポート。
韓国語学習者やK-カルチャー愛好者に最適なプログラミング体験。
多彩なサンプルコードと豊富な標準ライブラリを提供。
Han: 韓国語キーワードで書く汎用コンパイル言語
- Hanは、すべてのキーワード・識別子を韓国語(Hangul)で記述する静的型付き・コンパイル型プログラミング言語。
- Rustで実装されたコンパイラツールチェーンを持ち、LLVM IR経由でネイティブバイナリを生成。
- インタプリタモードも搭載し、即時実行やREPLによる対話的開発が可能。
- LSPサーバーを同梱し、エディタでの補完・ドキュメント参照をサポート。
- Hanの誕生背景には「プログラミング言語の見た目は国ごとに異なってもよい」という思想がある。
Hangul(ハングル)とプログラミング
- Hangulは、科学的に設計された韓国語の表記体系。
- Hanでは、함수, 만약, 반복, 변수など、すべてのキーワードが韓国語の本来の意味を持つ。
- 変数名・関数名も韓国語で付与可能、構造体やメソッド名も同様。
- 韓国語学習者や韓国文化に興味がある開発者にとって、実践的な読み書き練習の場となる。
主な機能一覧
- 韓国語キーワード:함수(関数)、만약(if)、반복(for)、변수(変数)など
- 韓国語識別子:変数・関数・構造体名も韓国語で命名
- コンパイル型:LLVM IR → clang経由でネイティブバイナリ生成
- インタプリタモード:clang不要で即時実行
- REPL・LSPサーバー:対話型実行、エディタ補完・ドキュメント
- 静的型付け:5つのプリミティブ型(정수, 실수, 문자열, 불, 없음)
- 配列・構造体・クロージャ・パターンマッチ:現代的な構文サポート
- エラーハンドリング:시도/실패(try/catch風)
- ファイルI/O・JSON・HTTP・正規表現・日付/時刻:豊富な標準API
- モジュールインポート・ジェネリクス・ハッシュマップ:拡張性・柔軟性
- 型検査・型推論:コンパイル時型チェック
クイックスタート
- サンプルファイル作成:
hello.hgl-
출력("안녕하세요, 세계!")
-
- 実行方法
- インタプリタ実行:
hgl interpret hello.hgl - REPL起動:
hgl repl
- インタプリタ実行:
- 出力例
-
안녕하세요, 세계!
-
実用サンプル
-
ワードカウンター
- 文字列内の単語出現回数をカウントするサンプル
- 配列操作、ループ、条件分岐の実践例
-
文字列計算機
"10 + 20"形式の文字列を計算- パターンマッチ、型変換、エラー処理例
-
ToDoリスト(構造体利用)
- 할일構造体でToDoを管理
- 配列/構造体/メソッド/状態変更の実践
-
ファイル行数カウント
- ファイル読み込み・行数カウント・エラーハンドリング例
インストール手順
-
前提条件
- Rust(1.70+)
- clang(hgl build/hgl run時に必要)
-
インストール方法
-
git clone https://github.com/xodn348/han.git cd han cargo install --path . - これで
hglコマンドがグローバル利用可能
-
-
VS Code拡張
editors/vscodeディレクトリでnpm install && npm run compile- VS CodeでF5実行でシンタックスハイライト+LSP対応
CLIコマンド一覧
hgl interpret <file.hgl>:インタプリタ実行hgl build <file.hgl>:ネイティブバイナリ生成hgl run <file.hgl>:即時コンパイル&実行hgl repl:対話型REPLhgl lsp:LSPサーバー起動
言語仕様と特徴
- データ型
- 정수(i64), 실수(f64), 문자열(UTF-8), 불(bool), 없음(void)
- 配列、負インデックス、構造体、タプル、列挙型(Enum)
- 制御構文
- 만약/아니면만약/아니면(if/else if/else)
- 반복(for)、동안(while)、멈춰(break)、계속(continue)
- 맞춰(パターンマッチ)、範囲演算子(0..10)
- 関数
- 型注釈付きの関数定義と再帰、クロージャ、引数としての関数
- 文字列・配列メソッド
- .분리, .포함, .바꾸기, .길이, .추가, .삭제, .역순, .정렬, .합치기など
- 構造体・メソッド
- 구조 人 { 이름: 문자열, 나이: 정수 }
- 구현 블록でメソッド定義
- エラーハンドリング
- 시도/실패ブロックでtry/catch風の例外処理
- ファイルI/O
- 파일읽기, 파일쓰기, 파일추가, 파일존재
- 標準API
- 数学(제곱근, 절댓값, 정수변환, 실수변환, 길이)
- 文字列フォーマット(형식("이름: {0}", 이름))
- モジュール(가져오기 "파일.hgl")
- ジェネリクス(함수 최대값<T>(a: T, b: T) -> T)
- ハッシュマップ(사전("키", 값))
- JSON(제이슨_파싱, 제이슨_생성, 제이슨_예쁘게)
- HTTP(HTTP_가져오기, HTTP_보내기)
- 正規表現(정규식_찾기, 정규식_일치, 정규식_바꾸기)
- 日付・時刻(현재시간, 현재날짜, 타임스탬프)
- システム(실행, 환경변수, 명령인자, 잠자기)
Hanの意義と魅力
- ハングルの美しさ
- 1443年、世宗大王により設計された科学的な文字体系
- 発音器官や宇宙の象徴が形に込められている
- Hanで함수 피보나치(n: 정수) → 意味も美しさも両立
- 韓国語学習との親和性
- すべてのキーワード・識別子が実際の韓国語単語
- プログラミングしながら韓国語の文脈理解が深まる
- 韓国語学習者・Kカルチャー愛好者にとって新しい学習体験
- グローバルな韓国語人気
- K-popや韓国映画・グルメで世界的な韓国ブーム
- 1,600万人以上が韓国語学習中
- Hanは技術と文化の橋渡しとなる
Hanコードで学ぶ韓国語
- 主なキーワードと意味
- 함수(ham-su):function定義
- 만약(man-yak):if条件分岐
- 반환(ban-hwan):return
- 변수(byeon-su):mutable variable
- 반복(ban-bok):forループ
- 동안(dong-an):whileループ
- 출력(chul-ryeok):print
- 참(cham):true
- 거짓(geo-jit):false
- 구조(gu-jo):struct定義
- 시도(si-do):try
- 실패(sil-pae):catch
言語ガイド抜粋
- 変数・定数
- 변수 이름 = 42
- 상수 파이 = 3.14
- 변수 나이: 정수 = 25
- 関数定義
- 함수 더하기(가: 정수, 나: 정수) -> 정수 { 반환 가 + 나 }
- 条件分岐
- 만약 점수 >= 90 { ... } 아니면 { ... }
- ループ
- 반복 변수 i = 0; i < 10; i += 1 { ... }
- 동안 n < 5 { ... }
- 制御文
- 멈춰(break)、계속(continue)
キーワードリファレンス
| キーワード | 意味 | 英語相当 | |:---:|:---:|:---:| | 함수 | 関数定義 | function/fn | | 반환 | 戻り値 | return | | 변수 | 可変変数 | let mut/var | | 상수 | 定数 | const | | 만약 | 条件分岐 | if | | 아니면 | else分岐 | else | | 반복 | forループ | for | | 동안 | whileループ | while | | 멈춰 | ループ脱出 | break | | 계속 | ループ継続 | continue | | 참 | 真 | true | | 거짓 | 偽 | false | | 출력 | 標準出力 | print | | 입력 | 標準入力 | input |
型システムと演算子
- 型一覧
- 정수:64bit整数(i64)
- 실수:64bit浮動小数点(f64)
- 문자열:UTF-8文字列
- 불:論理値(bool)
- 없음:void
- 演算子
- 算術:+, -, *, /, %
- 比較:==, !=, <, >, <=, >=
- 論理:&&, ||, !
- 代入・複合代入:=, +=, -=, *=, /=
Hanの制限事項・今後の課題
- 未実装機能
- Null安全(Option型)、async/並行処理
- ガベージコレクションは参照カウントのみ(循環参照時リーク)
- TCO(末尾再帰最適化)なし
- 一部機能はインタプリタのみ
- クロージャ・メソッドのバイナリ出力は未対応
- 配列・文字列メソッドのバイナリ出力は今後対応予定
まとめ・開発の動機
- AIとRustによる新しい言語開発の試み
- AIを活用し、ゼロからRust製コンパイラ+インタプリタを開発
- 韓国語キーワードに特化した唯一無二のプログラミング体験
- サイドプロジェクトとしての位置付け
- Python等の置き換えを狙うものではなく**実験的・教育的