Answers:
这意味着实际上没有没有错误的程序。关于通过错误本身避免错误的方法的深刻引用是模仿。
没有第三种方式。
没有编写无错误程序的方法
正如许多其他答案已经指出的那样,无法编写无错误程序。
但是我想指出的是报价的潜在元性质。本质上这是一个超出范围的错误。在第一句话中,他定义了只有两个可能性或元素的Universe或“列表”。然而,在第二句话中,他提到了第三句话。哪个荒谬!甚至非法!给定两个元素边界的第三个元素本身就是一个错误。
真正深刻的是,引用能够证明其所指的本质。
有可能编写无错误的程序,甚至是非平凡的程序,甚至证明它们是正确的。例如,考虑完成Coq,Epigram或Agda之类的语言。
该停机问题指出,这是不可能的,为做到这一点的一般程序。
我父亲找借口时,这句话跟我父亲说的一样。俗话说得像:“一个故事有3个方面。它们的方面,您的方面,以及正确/正确/正确的方面”。
将其与开发相关联(并成为教授,作为软件测试人员),我想说,因为编码的东西太多了,所以“ 3个方面的编码是有意义的。您的代码,他们的代码和重构代码。”
我认为这是因为程序员/开发人员倾向于在产品变得稳定之后进行重构,而这通常为时已晚,但是大多数情况下,进行重构是为了改善您和伙伴最初做得不好的事情。
希望这可以帮助。
从技术上讲,我认为您可以编写没有错误的非平凡程序,但是由于停止问题,不可能证明它没有错误。因此,必须在所有程序都有错误的假设下工作,因为不可能证明否则。
http://en.wikipedia.org/wiki/Halting_problem
更新:您可以证明特定的算法将返回正确的答案,但这与证明它完全正确是不同的。 http://en.wikipedia.org/wiki/Correctness_(computer_science)
但是,我的意思是,引用是指这样一个事实,即必须假定程序始终存在错误,并试图解释为什么会这样。 http://en.wikipedia.org/wiki/Software_bug#Bug_management
作为另外的见解,“两种方式”可能是Tony Hoare对此引用的引用:
构建软件设计的方法有两种:一种方法是使它变得如此简单,以至于显然没有缺陷,另一种方法是使它变得如此复杂以至于没有明显的缺陷。第一种方法要困难得多。它需要与发现自然复杂现象基础的简单物理定律相同的技能,奉献精神,洞察力甚至灵感。
稍微思考一下,您会发现他在说同样的话:如果您的软件不是很简单的,它就会有bug(但要使其足够复杂,它们就不会是明显的 bug)。