このエントリーをはてなブックマークに追加

目次

はじめに

この記事は、私の趣味垢名義の投稿です。
また、喜多日菜子 Advent Calendar 202016日目の記事です。

妄想言語「Hinako」について

この度私は、妄想プログラミング言語「Hinako」を開発しました。
この言語は、喜多日菜子の妄想でプログラミングができる言語です。

そもそも喜多日菜子とは

喜多日菜子とは、アイドルマスターシンデレラガールズに登場する妄想アイドルです。
2020-12-16Hinako.jpg
詳細はひなこぺでぃあを見ていただくとして、ここで重要な特徴が日菜子の発言です。
日菜子は妄想中も、そうでない時もよく 「むふ」「むふふ」 と言い、語尾にはしばしば 「♪」「~」 がつきます。
一人称は 「日菜子」 で、妄想中は妄想に王子様がよく出るためか 「王子様」 という発言も見受けられます。
これを使ったのが「Hinako」なのです。

構文を紹介

妄想プログラミング言語「Hinako」は下記の命令で構成されます。

命令一覧(C言語における対応する文)=Brainf*ckにおける対応する命令

  • むふふふふ:ポインタをインクリメントする。(ptr++;)
  • むふふふ:ポインタをデクリメントする。(ptr--;)
  • むふふ:ポインタが指す値をインクリメントする。((*ptr)++;)
  • むふ:ポインタが指す値をデクリメントする。((*ptr)--;)
  • ♪:ポインタが指す値を出力に書き出す。(putchar(*ptr);)
  • !:入力から1バイト読み込んで、ポインタが指す先に代入する。(*ptr=getchar();)
  • 日菜子は~:ポインタが指す値が0なら、対応する ] の直後にジャンプする。(while(*ptr){)
  • 王子様~:ポインタが指す値が0でないなら、対応する [ (の直後[1])にジャンプする。(})
  • それ以外の文字:コメント扱い

上記の通り、Brainf*ckの命令を置き換える形で実装しています。

実践

それでは、妄想プログラミング言語「Hinako」でプログラミングをやってみましょう。
実行環境は、下記実行サイトです。

実行サイト

「Hinakoコード入力欄」にHinakoのコードを入力し、「Hinakoコードを実行します~」ボタンを押すとプログラムを実行できます。
とはいえいきなり「Hinako」のコードを打ち込むのは大変です。
そこで、「Brainf*ckコード入力欄」にBrainf*ckコードを入力し、「←」ボタンを押すことで、
「Brainf*ck」の「Hinako」への変換が可能です。
「Brainf*ck」のコードは、「Brainf*ck サンプルコード」等で調べると出てきます。

例えば、プログラミングの基本「Hello World」を出力するプログラムは「Brainf*ck」だと

+++++++++[>++++++++>+++++++++++>+++>+<<<<-]>.>++.+++++++..+++.
>+++++.<<+++++++++++++++.>.+++.------.--------.>+.>+.

ですが、これを「Hinako」で書くと

むふふむふふむふふむふふむふふむふふむふふむふふむふふ日菜子は~むふふふふむふふむふふむふふむふふ
むふふむふふむふふむふふむふふふふむふふむふふむふふむふふむふふむふふむふふむふふむふふむふふむふふ
むふふふふむふふむふふむふふむふふふふむふふむふふふむふふふむふふふむふふふむふ王子様~むふふふふ♪
むふふふふむふふむふふ♪むふふむふふむふふむふふむふふむふふむふふ♪♪むふふむふふむふふ♪むふふふふ
むふふむふふむふふむふふむふふ♪むふふふむふふふむふふむふふむふふむふふむふふむふふむふふむふふ
むふふむふふむふふむふふむふふむふふむふふ♪むふふふふ♪むふふむふふむふふ♪むふむふむふむふむふむふ♪
むふむふむふむふむふむふむふむふ♪むふふふふむふふ♪むふふふふむふふ♪

となります。
実行すると、実行結果欄に

Hello World!

と出るので、確かに「Hinako」のプログラムを実行できました。
…それにしても、日菜子は妄想中こんなに多くむふむふ言うのですねぇ()

こんな時に使いましょう

  • むふふな気持ちでプログラミングをする時
  • プログラム文であることを、この言語を知らない人にばれないように共有したいとき

実装時の参考リンク



←Next: Jekyllのサイトを改造してみた
Previous: [小話]Googleアナリティクスと広告ブロッカー