Brainf*ckのインタプリタをscratchで作った話
scratchとかいうプログラミング教育用教材がありますね。
これを見た時ふとscratchで作ったプログラムはフルスクラッチって言えるんじゃね、みたいな(今考えると)激寒ジョークを考え付きました。
よし、Twitterでこのジョークを使えばバズるのでは
さて何を作ろう。
そんなに手間じゃなくて何かいかにもフルスクラッチとか言える物……そうだBrainf*ckだ。Brainf*ckを知らない人はこちらで確認してください。
要はたった8個の命令だけのプログラミング言語。これならインタプリタの作成くらい楽じゃん。ということで実際に作成しました。作ったものがこれ
寝る前という正常な判断の出来ないタイミングで思いついた激寒ギャグとそんな状態で作った物なので非効率的な部分とかマジックナンバーが登場してますが人に読まれることを想定して書いてないので許して。
さて、このブログを読んでくれる人(そもそも存在するのか……)が興味あるとはとてもじゃないが思えないが今回分かったscratchでプログラムを作成する上で注意しなければならないことを一つ書いときます
それは
大文字と小文字を判別してくれない
echoプログラムをテストした時に発覚しました
あれ?入力はhogeなのに出力がHOGEになってる。入力の文字列をアスキーコードに変換する際に
このブロックを使ってたのですが、これがどうやら大文字と小文字を区別しないらしい。だからアスキーコードで最初の方に出るアルファベットの大文字の方の番号を返していたらしい。
さて、どのように対処するか
scratchの仕様ということであきらめるか、
とりあえずググってみると「コスチューム」の名前は大文字と小文字を区別するらしいという知見を得ました。
(コスチュームって何なのか猫が服とか着るのか、その辺はよく分かりませんが)
一回文字をコスチュームの名前とやらに設定してコスチュームの名前を判定してやれば大文字小文字の判別が出来るようです。
そしたら
以上多分このブログ見てる人でscrath使って何か作ろうなんて人はいないと思いますが役立ったら嬉しいな。
最初これをコンパイラとか言ってツイートしてしまいましたがこれはインタプリタです。コンパイラは要は機械語へのインタプリタなのでBrainf*ckならインタプリタ作る感覚で作れるとか書いてあるのを見てこれもscratchで作ってやろうと思いましたが、いかんせん機械語とかアセンブリとか知識は皆無なので断念しました。ちょっと調べた感じBrainf*ckより命令も多くてアセンブリの方が書きやすそうな印象を受けました(入力は難しいのかな?)
因みに……
元々はTwitterでバズることを目指していましたが結果はどうだったのか
暇だったのでBrainf*ckのコンパイラをフルスクラッチ(scratchで作ったので嘘ではない)で作成しましたhttps://t.co/iBzZgcwbXC
— いろは_なの (@iroha_nano145) May 17, 2019
まぁいつもの自分のツイートに比べれば少しだけ伸びてるけど……うん、スベったね。
ちなみにslckでは反応が皆無でした(スベったね)