LoginSignup
4

More than 3 years have passed since last update.

posted at

釘宮病患者の、釘宮病患者による、釘宮病患者のためのプログラミング言語「くぎゅ言語」できました。

詳しい人向けの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ファイルの作成

kugyuLang.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!

できた!

みなさんもぜひ「くぎゅ言語」でプログラミングしてくださいね!

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
4