Kimian Self Reproduction

看《GEB》时看到了这个东西,感觉很有意思。《GEB》在第 16 章中提到了这个东西,中文版的把它翻译成了“凯姆式自复制”。其实它类似于Quine)(如果你还不了解这个东西,可以在我的主页上找到我写的Quine),也是打印其本身,不过它是无意义的,也就是说编译器/解释器会报错,而错误信息本身就是它的内容!

在网上搜了搜,发现就这么一个页面介绍Kimian,里面给出的例子除了Perl的那个别的在Linux上都不行。所以我又自己特意写了几个:

zsh版的Kimian:

% zsh: command not found: zsh:
zsh: command not found: zsh:

Python版的Kimian:

% cat kimian.py
File “kimian.py”, line 1
File “kimian.py”, line 1
^
IndentationError: unexpected indent
% python kimian.py
File “kimian.py”, line 1
File “kimian.py”, line 1
^
IndentationError: unexpected indent

另一个Perl版的:

% cat kimian.pl
kimian.pl syntax OK
% perl -X -c kimian.pl
kimian.pl syntax OK

C版的Kimian:

% cat kimian.c
kimian.c:1: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘attribute‘ before ‘.’ token
% gcc -w -c kimian.c
kimian.c:1: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘attribute’ before ‘.’ token

有兴趣的朋友可以自己尝试去写写。;)