ziium - 韓国語の文構造でコードを書くプログラミング言語
(ziium.github.io)韓国語の助詞と述語を文法要素として活用する実験的なプログラミング言語。
既存言語のキーワードをハングルに翻訳する方式ではなく、
韓国語話者が読み書きする流れに近い表層文法を目指している。
Rustで実装され、WebAssemblyのブラウザープレイグラウンドを含む。
コーディングを初めて学ぶときから想像だけはしていたものですが、Codexの助けを借りてこうして作ってみることができました。
実用性はたぶんないと思いますが……いろいろな文法を実験中です。
核心は「ハングルのキーワード置換」ではなく、韓国語の文の流れを生かすことでした。
たとえば、こんなコードになります:
이름은 "철수"이다.
나이는 20이다.
나이 > 19이면
"성인이다"를 출력한다.
아니면
"미성년자이다"를 출력한다.
助詞が文法的な意味を持ちます。
은/는はバインディング、을/를は対象、의はプロパティアクセス、으로は変換フレームです。
そのため、합은 7 더하기 8이다や결과는 5의 제곱이다のようなこともできます。
関数も韓国語の文の形で定義し、呼び出します:
인사만들기 함수는 이름을 받아
"안녕, " + 이름 + "!"을 돌려준다.
인사문장은 "지음"으로 인사만들기이다.
キャンバスグラフィックスも扱えます:
그림판에 { 배경색: "#f6efe2" }으로 지우기.
그림판에 { x: 120, y: 80, 색: 빨강 }으로 점찍기.
内部的にはSmalltalkスタイルのメッセージ送信モデルを使っているため、
表層は韓国語ですが、意味構造はかなり厳密です。
Rustで作られており、wasm-packでブラウザープレイグラウンドも動きます。
ハノイの塔のキャンバスデモまでは動作する状態です。
まだ v0.1 なので不足している点は多いですが、フィードバックをいただけるとうれしいです。
12件のコメント
おお...
나이 > 19이면は、部分的に나이가 19보다 크면のようにもできるのではないでしょうか。이/가の前の部分と보다の前の部分を、それぞれ左辺と右辺として解釈すればよさそうです。≥は크거나 같으면または이상이면にできそうです(ただしこの場合は보다を使わず、つまり나이가 19 이상이면のように表現する必要はありそうですね。そうすると이/가を基準に左右を区別しなければならないので、少し解釈時の複雑さは上がりそうですね)。本当に素晴らしいです!
少し前にも「Han」という言語が取り上げられたとき、この「ヌリ」という言語の紹介に言及がありました。
https://github.com/suhdonghwi/nuri/
ヌリという言語も、自然に韓国語と同じ語順になるようですね。
ジウム言語も自然な文になっていて、読むのも簡単です。さらに進めて、
年齢 > 19なら
"成人だ"を出力する。
そうでなければ
"未成年者だ"を出力する。
=> 年齢が19歳以上なら「成人だ」と出力し、そうでなければ「未成年だ」と出力する。
このようにできれば、完璧な韓国語になるでしょう。
これまで見た韓国語のプログラミング言語の中で、文法的に最も興味深いです。面白いですね。
私も昔から想像していたことなのですが、生きているうちにこんなふうに作られたものを見られるとは思いませんでした。応援しています! 一生懸命使ってみます。
おお、応援しています!!!!! こういうプロジェクトを待っていました〜
以前に私が進めていたプロジェクトの文法と似ていて、興味深いですね!
その文法のままプロンプトを作れば、とても良い仕様になりそうですね
わあ、すごく面白そうですね???
おお、面白そうですね!韓国語の文法は厳密に使うのでしょうか? それとも、ある程度の柔軟性があるのでしょうか?
わあ、私の最初のプログラミング言語は創造だったのに……!
わあ、素晴らしいプロジェクトです...