レイン開発日誌17
2004年2月23日
ありがたいことに、開発メンバーのUさんが、
前回考えたモデルを図にしてくれた。
なるほど、わかりやすい。
つまり、こういうことだ。
1)入力(センサ系)が、「記憶箱」に観測データとして数字をいれる。
2)知能系がプログラムにしたがって、記憶箱に入っている数字を
足したり引いたりと計算を行う。
3)最後に、出力(駆動系)が記憶箱から、数字を取り出し、
その数字にしたがって動く。
では、
知能系が使用するプログラムはどんなのが良いだろうか?
ここで、プログラムとは、
「箱に入っている数字を使って計算する方法」を
書いたものなのだから……こんなのはどうだろうか?
if ( [2] > [3] ) [6] + [2] = [7]
この文の意味は、こうだ。
「2番目の箱の数字が、3番目の箱の数字より大きければ、
6番目と2番目の箱の数字を足し算して、
その結果を7番目の箱に入れる」
こんな感じの文を大量に並べて、
箱の中の数字を、とっかえひっかえ、足したり引いたりすれば、
どんな複雑な計算でも再現できてしまうはずだ。
さてさて。
今、面倒くさがり屋のボクは、知能系のプログラムをなんとかして、
プログラム自身に書かせようとしているわけだから、
上の文はもっと分かりにくくてもよいだろう。
つまり、コンピュータにとって読みやすければ、
人間にとって読みにくくてもかまわないということだ。
というわけで、
if ( [2] > [3] ) [6] + [2] = [7]
↑から余分な文字を取り除けば……
[2]>[3][6]+[2]=[7]
になる。もちろん、文の意味は、前と同じだ。
これでいいかな??……いやいや、もっともっとシンプルにしよう。
[ ] はいらないだろうし、いっそ、= も外してしまおう。
2>36+27
これでいいんじゃないかなあ?
(箱の番号は、一桁であるという条件付きだけど)
こんな「文」を大量にランダムに作り出していけば、
いつかは偶然に、「正しい計算をする賢いプログラム」が
できてしまうんじゃないだろうか?
|