チューリングマシンは、決められたルールに沿ってカード(記号)を書き換える操作であればどんなものでも、レールのつなぎ方(状態遷移)を変えれば実現できる機械でした。たとえば論理の推論や、数学の計算のルールなども、カードと線路の組み合わせで実現ができます。
ですが、ルールを変えるたびに、線路を実際につなぎかえていたのでは大変です。
そこで、その線路のつなぎ方をカードで 表して、それに従って動く機械をつくれば、カードの並び方を変えるだけで、どんなルールでも実行できるようになります。これが万能 チューリングマシンです。
すべてをカードにしてしまったので、記号とルールの境目もなくなってしまい、すべての計算は(論理でも整数でも)、ある種のカード列に対応付けができることになります。
すると、プログラミングというものは、そうしたカード列の中から意味のあるものを選び出すことになります。また、コンピュータで人工知能を作るには、カード列の中から知能だと思えるカード列を選べばいいことになります。
では、人工知能にはプログラミングができるのでしょうか?たくさんあるカード列の中から役に立つものを選び出そうとしたときに、自分自身を評価する自己言及的なことをしてしまっても大丈夫なのでしょうか。不完全性定理のような問題が起こってしまわないかどうか、少し心配になります。
ですが、あまり問題にする必要はないようです。
なぜなら、不完全性定理で問題にしていたのは「矛盾」の証明であって、「有用性」の証明ではありません。また、有用性は「証明」できなくても構いません。人間だってすべてのプログラムの有効性を判断できないですし、不具合のある(ある操作をすると止まらなくなったりする)プログラムをだましだまし使っ ているというのは普通にあることです。
むしろ、カード列にどうやったら意味を見いだせるのか、という方が問題になりますが、それは不完全性定理によって否定されるものでは無いようです。
# 文章が変だったので、少し直しました…