みなさま、こんにちは。
チューリングマシンをViscuitで作りたくなった教育ヲタ母です。
先日、こちらの記事でご紹介したチューリングさんのチューリングマシン。
プログラミング教育に「哲学」はあるか?
紹介してしまったからには・・・チューリングマシンがどのようなものかを解説しなければなりません。でもチューリングマシン・・・わかんなーい!ということで、自分で作ってみたいと思います。自分でつくれば、なんとなくわかるはず。
とはいえ、最初から調べるのは無謀なのでこちらの記事を参考にさせていただきました。チューリングマシンの理解はこちらの記事を読んでみてくださいね。
チューリングマシンを宇宙一わかりやすく解説してみる
1. チューリングマシンを理解しよう
上記の記事によれば、チューリングマシンとはざっくり次のような機能を持つものであることがわかりました。
・ヘッダがフィルムのようなところを読み込む。
・ヘッダはフィルムのようなところに書き込みもする。
・ヘッダの読み込み、書き込み、どっちに動くか?は機能表に従う
・機能表には「状態」というものが存在する
1-1. Visucuit(ビスケット)の方眼紙モード
まず、チューリングマシンの「フィルムのようなもの」についてですが、これはViscuitの方眼紙モードを使いましょう。
方眼紙モードは、絵を固定することができる機能です。
歯車のボタンを押すと、設定画面に移動します。
こちらが設定画面です。方眼紙モードの方へ縦の棒をずらすと、方眼紙モードに変わります。一番右側が方眼紙のサイズが大きくなります。
方眼紙モードにすると、絵を描くところに四角いガイドが表示されます。この四角が方眼紙のマス目の大きさになりますので、マス目の中に絵を描くと、その中に収まる絵がかけめます。
▼これは一番大きいマス目です。
1-2. 「状態」をどう表すか?
次に機能表の「状態」をどう表すか?ということになりますが、Viscuitはいろいろな色でお絵かきができるので、「状態」=色で表現したいと思います。
色で何かを表すことができるというのがViscuitプログラミングの面白いところだと思っています。
1-3. 機能表をどう表すか?
最初にご紹介したこちらの記事の機能表これはまさにメガネそのものだなー、と思いました。状態をどう表現するか?ということが決まればこの機能表をメガネで作ることができる、そう考えました。
というわけで、ビスケットで絵を用意しました。
「フィルムのようなもの」は方眼紙のマス目に合わせて描きました。
その他の絵も、マス目の中に収まるように書いています。ヘッドの色で状態を表すようにしました。
参考にした記事の縦の棒|は、緑の丸で表現しました。これらの絵をステージに並べるとこんな感じ。
今回は3+2の計算をチューリングマシンでやってみます。
参考にした記事の機能表を、わかりやすく翻訳してみます。
元の機能表(参考元記事から画像をお借りしています。)
翻訳後
2. Viscuitでチューリングマシンを作ろう
ここまできたら、後は機能表にしたがってメガネを作るだけです。
例えば、機能表の左上のマスは・・・
日本語にするとこうです
ピンクのヘッドが緑の丸を読み込んだら、空にしてヘッドは右に動いて状態は黄色になる。
これをメガネにすると
あとは同様に機能表にしたがってメガネを作っていきます。
1列目のメガネ
まずは状態0、つまりピンクのヘッドが何かを読み込んだ時のメガネです。
この列のメガネがこちら↓
2列目のメガネ
次に状態1、青のヘッドが何かを読み込んだ時のメガネです。
この列のメガネがこちら↓
3列目のメガネ
次に状態2、黄色のヘッドが何かを読み込んだ時のメガネです。
この列のメガネがこちら↓
3. チューリングマシンは動作したか?
メガネのプログラミングが終わりました。チューリングマシンは動作するのでしょうか?
3+2は5になるのでしょうか・・・?
最後に並んだ丸の数が計算結果、ということになるようです。というわけでチューリングマシンができましたー。
3. Visucuit(ビスケット)でチューリングマシン まとめ
今回は他の記事を参考にチューリングマシンを作ってみました。
実際に作ってみると、「機能表がキモ」だということがわかりました。今回は足し算をやってみましたが、掛け算の機能表も存在するようです。(ただし、状態の数がかなりおおく絵とメガネがたくさん必要になりそうです。)
この機能表もチューリングさんが考えたんでしょうか?だとしたら、彼が天才と言われるのも思わず納得してしまいました。
<補足>
Viscuitのプログラムはこちら
https://develop.viscuit.com/env/view.html?control=play%3A00300013%3A7431%2F1-1%2F015.json%3A
※PCのみ