レイン開発日誌172004年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 これでいいんじゃないかなあ? (箱の番号は、一桁であるという条件付きだけど) こんな「文」を大量にランダムに作り出していけば、 いつかは偶然に、「正しい計算をする賢いプログラム」が できてしまうんじゃないだろうか? |
関連事項: 続き
|