伊庭研ロゴ
ロゴは以下から入手可能です
"A"の意味は何ですか?
自分自身のコードをはくプログラムを考えてみましょう。
print文を使えば簡単かと思うかもしれませんが、空白の出力も合わせなくてはならず、 それほど容易ではありません。
例えば、C言語では以下のようなものが最短(?)として知られています。
#include
char *s="#include %c
char *s=%c%s%c;main(){printf(s,10,34,s,34);
return 0;}";main(){printf(s,10,34,s,34);return 0;}
LISPではもっと簡単に次のように書くことができます。このプログラム(S式)を木構造に表したものが伊庭研Logoの"A"の基になっています。 ただし単に同じものを出力するのではなく、突然変異による進化を取り入れています。
((lambda (x) (list x (list 'quote x))) '(lambda (x) (list x (list 'quote x))))
LISPは自分自身を評価することができるのでこのように短く自己増殖のプログラムを書けるのです。
わたしはAI研究者として最初にLISP言語を習得しました。 LISPの考えかたはAI(人工知能)やAL(人工生命)に大いに役立つと考えます。