#詳しい人向けの3秒解説
ただのBrainf*ckです。
#サンプルプログラム
くぎゅううううううううう!くぎゅ〜うううううううう〜ううううううううううう〜うううううーーーぅ!!くぎゅ〜っ
〜ううっうううううううっっうううっ〜ぅっぅぅぅぅぅぅぅぅぅぅぅぅっーううううううううっぅぅぅぅぅぅぅぅっうううっぅぅぅぅぅぅっぅぅぅぅぅぅぅぅっ〜うっ
上記の奇怪な文字列は、釘宮病患者の極めて日常的なツイートに見えますが、
こればちゃんと実行可能なプログラムのソースコードです。
Hello, World!
#言語の特徴
釘宮病患者の放つ奇声になるべく近くなるようデザインされた
プログラミング言語です。
元となったBrainf*ckは、特に
+と-の出現頻度が高いことから、
それを「う」と「ぅ」に置き換えれば
極めて自然な釘宮病患者の奇声に似せられると思い、
作ってみました。
動作 | Brainf*ck | くぎゅ言語 |
---|---|---|
インクリメント | + | う |
デクリメント | - | ぅ |
ポインタを右に | > | 〜 |
ポインタを左に | < | ー |
標準出力 | . | っ |
標準入力 | , | ッ |
条件付ループ開始 | [ | !くぎゅ |
条件付ループ終了 | ] | !!くぎゅ |
※このパターンに一致しない文字列はコメントとしてコンパイラに無視されます。
意味はないけど、プログラム先頭に「くぎゅ」の3文字をいれておくと、ソースコードが美しくなります。
#実際の作り方
Brainf*ckをマッピングしてジョークプログラミング言語を作るためのツールはたくさんあると思いますが、
今回は @284km さんの gem_brainをお借りしました。感謝。
https://github.com/284km/gen_brain
https://284km.github.io/slides/20171109_omotesandorb28/slides/#/
Ruby実行環境で動作します。
Macでやってます。
###gen_brainのインストール
$ gem install gen_brain
###configファイルの作成
title: kugyulang
p_inc: "〜"
p_dec: "ー"
v_inc: "う"
v_dec: "ぅ"
output: "っ"
input: "ッ"
jump_forward: "!くぎゅ"
jump_back: "!!くぎゅ"
###configファイルからくぎゅ言語実行ファイル(とサンプルプログラム)をgenerate
$ gen_brain kugyuLang.config
⭐️ Input config file nam #=> kugyuLang.config
🎉 Created kugyulang.rb and kugyulang_hello_world
🌈 Let's execute the following code!!
#=> ruby kugyulang.rb kugyulang_hello_world
###中身確認
$ cat kugyulang_hello_world
ううううううううう!くぎゅ〜うううううううう〜ううううううううううう〜うううううーーーぅ!!くぎゅ〜っ〜ううっうううううううっっうううっ〜ぅっぅぅぅぅぅぅぅぅぅぅぅぅっーううううううううっぅぅぅぅぅぅぅぅっうううっぅぅぅぅぅぅっぅぅぅぅぅぅぅぅっ〜うっ
###ソースの先頭にくぎゅを挿入する
コメントとして扱われるで別に動作にはなんの意味も無いんだけど、美しくなるので書きましょう。
###修正確認
$ cat kugyulang_hello_world
くぎゅううううううううう!くぎゅ〜うううううううう〜ううううううううううう〜うううううーーーぅ!!くぎゅ〜っ〜ううっうううううううっっうううっ〜ぅっぅぅぅぅぅぅぅぅぅぅぅぅっーううううううううっぅぅぅぅぅぅぅぅっうううっぅぅぅぅぅぅっぅぅぅぅぅぅぅぅっ〜うっ
###実行
$ ruby kugyulang.rb kugyulang_hello_world
Hello, world!
できた!
みなさんもぜひ「くぎゅ言語」でプログラミングしてくださいね!