😄
地獄のようなプログラミング言語を作った話【python】
はじめに
こんにちは。
自分は、プログラミング言語を今のところ2つ作っているのですが、その中にnumberというプログラミング言語があります。
この記事では、そのnumberという地獄のような言語を紹介します。
numberとは
numberとは、brainf**kというプログラミング言語(これも地獄)にトランスパイラし、名前の通り数字しか使わない言語です。
試しにHello world!と表示するコードを見てみましょう。
11111114021111111111352117
21111111111402111111111135217
211111111114021111111111352111111117
211111111114021111111111352111111117
211111111114021111111111352111111111117
21114021111111111352117
21111111111402111111111135211111111111111111117
211111111114021111111111352111111111117
211111111114021111111111352111111111111117
211111111114021111111111352111111117
2111111111140211111111113527
211140211111111113521117
見ての通り地獄ですw
次に、トランスパイラされた後のコードを見てみましょう(brainf**k)
+++++++[->++++++++++<]>++.
>++++++++++[->++++++++++<]>+.
>++++++++++[->++++++++++<]>++++++++.
>++++++++++[->++++++++++<]>++++++++.
>++++++++++[->++++++++++<]>+++++++++++.
>+++[->++++++++++<]>++.
>++++++++++[->++++++++++<]>+++++++++++++++++++.
>++++++++++[->++++++++++<]>+++++++++++.
>++++++++++[->++++++++++<]>++++++++++++++.
>++++++++++[->++++++++++<]>++++++++.
>++++++++++[->++++++++++<]>.
>+++[->++++++++++<]>+++.
こっちも地獄ですw
どのように作ったのか
仕組みは以下のコードで分かるように、数字をbrainf**kの記号に変えているだけです。
因みに、ほんのちょっとの時間だけで作りました。
numberのトランスパイラーのソースコード↓
transpiler.py
#read the file
with open(r"num\main.num", "r", encoding="utf-8") as file:
code = file.read()
#transpiler
code = code.replace("1", "+")
code = code.replace("0", "-")
code = code.replace("2", ">")
code = code.replace("3", "<")
code = code.replace("4", "[")
code = code.replace("5", "]")
code = code.replace("6", ",")
code = code.replace("7", ".")
#write the file
with open(r"num\main.bf", "w") as file:
file.write(code)
見ての通り、brainf**kより地獄にするためにコメントはありませんw
おわりに
このプログラミング言語は、コードを書いている時に機械語を直接打っている気分になりますので、上記のコードをコピーして是非numberという言語を書いてみてください。
記事の冒頭に書いているように、自分は2つプログラミング言語を作っているので気が向いたらもう一つのプログラミング言語の記事を書くかもしれません。
※もう一つのプログラミング言語は地獄ではないです。
さようなら。
Discussion