見出し画像

プログラミング言語を作る(真似事)

お疲れ様です。Y研究員です。もうすぐ春ですね。暖かくなって疫病がおさまったら在宅勤務は中止でしょうか。なんか辛い気がします。なんとか通勤を減らせないものでしょうか。

それはさておき、自分のプログラミング言語を作ったのでその報告です。厳密に言うと、すでにある言語の命令(文字というか記号と言うか)を置き換えました(インタープリターが、コンパイラーがという渋い指摘は甘んじて受けますが、そのへんは次回で回収します)。お題は命令が8個しか無いBrainfuckです。今回はざっくり何をしたか概要を書きます。

8つの文字だけでプログラミングする簡素な言語、BrainfuckがPythonのパッケージで提供されているのでそれを利用します。『pip install python-brainfuck』でインストールします。

Pythonのコードで8つの文字を絵文字と置換するプログラムを書きます。絵文字は世界に誇る日本文化です。なので、8つの絵文字でプログラムできるようにしました。名前はEmojifuck。実行ファイルは短く略して『emjf』です。(拡張子もemjfにしちゃいましたが、同じだと変なので後で変えたほうが良いかもしれません)

選ばれた8つの絵文字。

ポインタを動かしたり増やしたりは手のサインで。入出力は顔文字です。プログラムカウンタの移動は矢印にしました。試しに『7』を出力するプログラムを表示してみます。

最後は『出力』しています。

これを『emjf』で実行すると『7』が表示されます。

Hello world!より地味。。。

Pythonで雑に書きなぐって(128行)とりあえず動いたので、余力を使って単独で実行できるようにNuitkaでコンパイル(stand alone)。ついでにdebuildでDebianのパッケージ化までしておきました。誰得でしょうか。でも『sudo apt install ./emjf_0.0.1_all.deb』でインストールできて一満足です。

さて今回はプログラミング言語を作る『真似事』の概要を紹介しました。次回は『真面目』にプログラミング言語を作る方法について考えてみたいと思います。

それではまた。

無料のプログラミングクラブCoderDojoを運営するにあたり寄付を受け付けています。お金は会場費・Wifiの費用・教科書に使用します。