我听说有些东西作为计算机程序员不能做,但我不知道它们是什么.我最近发生的一件事是:如果有一个类可以复制它运行的程序的源代码,修改该程序并向该类添加一个方法,然后运行,那会不是很好程序的副本并终止自身.代码是否可以编写代码?
如果您想了解可计算性的限制,请阅读暂停问题
在可计算性理论中,暂停问题是一个决策问题,可以表述如下:给定程序和有限输入的描述,在给定输入的情况下,确定程序是否完成运行或将永远运行.
Alan Turing在1936年证明,不存在解决所有可能的程序输入对的暂停问题的通用算法
首先看看quines,然后是Macro-Assemblers,然后是lex&yacc,以及flex&bison.然后考虑自修改代码.
这是一个quine(格式化,使用输出作为新输入):
#includemain() { char *a = "main(){char *a = %c%s%c; int b = '%c'; printf(a,b,a,b,b);}"; int b = '"'; printf(a,b,a,b,b); }
现在,如果你只是在寻找程序员不能做的东西,那就找np-complete的反面.
当然是啦.这就是很多病毒的工作方式!