计算机科学

辩论或争论

测试程序或证明它是正确的?第二种方式,更令人满意,是优选的。不仅在计算机科学中......

Gilles Dowek. 对于Science N°451
本文保留用于科学用户
 图片

计算机科学家们发明了许多方法,以防止他们的程序过多的错误。在编写程序之后,首先是一个在几百或千例中测试它。例如,寻求迷布完成迷宫的程序,可以在几百或数千不同的迷宫上测试。如果该计划使其预期的内容,我们可以在其纠正中获得一些归纳信心。但正如我们无法测试所有可能的情况下,无论如何,没有任何阻止有一天出现任何错误。

第二种方法是证明所提出的程序是正确的,也就是说要制造数学证明,在想象力的所有情况下,它会做我们对他所期望的。例如,在编写寻求迷宫释放的程序之后,如果有一个,这是一个证明这个程序总是找到退出的问题。展示程序的纠正比测试它更困难,但是当它来到它时,我们非常肯定在程序运行时没有明显的错误。

示范的概念带来了近距离的数学计算,但测试的概念正在走开。在数学中,如果我们想说服自己,例如,乘法的结果 p × q de deux nombres pq 总是与乘法相同 q × p,唯一可能的方法是演示。当然,没有什么能阻止测试某些情况,例如3×7和7×3,12×25和25×12等。为了熟悉这个问题,或制定猜想,但这些测试永远不会有助于真理判断。

与涉及单个人的示范不同,程序的测试可以被视为两个虚构人与人之间的对话:该计划的作者,这使得他的程序是正确的,但没有解释原因和测试人员对象到此断言程序最终将失败的情况。如果不是这种情况,则丢弃异议。如果所有测试人员的异议丢弃,则该计划被视为正确。另一方面,示范不仅提前传播了假设的测试仪的反对,而且提出了所有可能的反对意见。

因此,该测试基于奇怪的逆转的证据逆转:它不再是该计划的作者,必须解释后者是正确的,但它是他的对话者,他必须找到程序员肯定的肯定击败。

但是,没有被他的中间人击败并不意味着我们是对的;它也意味着对话者没有找到正确的反对意见。这就是为什么程序已经过测试的事实永远不会排除一个错误,一天,在测试不探索的情况下。这就是为什么数学方法不包括在持有任何提案中,以“true为止,否则”;通常,只有在无法推进演绎参数时,科学方法才接受归纳参数。

这使我们能够观看可疑的眼睛,这是我们公司对对话方式的奖励,包括矛盾辩论,损害逻辑方法。好像我们假装欺骗他对中间人的反对,足以是正确的。

例如,在选举之前,而不是在候选人之间组织辩论,为什么我们不会让他们依据他们的争论来支持他们的肯定,从而留下他们所说的证据的责任?

订阅和ACC.édez à plus de 20 ans d'archives !

12号éros + 4 hors-série
在纸张版本+ numérique

+ ACC.ès illimité à plus de 20 ans d'archives

我是'abonne

订阅和ACC.édez à plus de 20 ans d'archives !

12号éros + 4 hors-série
在纸张版本+ numérique

+ ACC.ès illimité à plus de 20 ans d'archives

我是'abonne

我们的上一篇出版物

回到顶部