英国数学家艾伦·图灵(1912—1954)在1936年就证明了制作可调试电脑程序的程序是不可能的。这是基于图灵(略高于一般人类)的智慧与电脑或机器智慧不同的原理所得出的佐证。
这里简单介绍一下图灵证明的手法(图6-3),如果对电脑程序不感兴趣可以直接跳到下一节。
图6-3 图灵的证明
首先,假设能制造一个判断电脑程序是否正确的程序——“自动调试器”。如果这个假设出现矛盾,就证明不能用程序来调试程序。
电脑系统或程序漏洞千差万别,种类也许与程序员(人类)的个性一样多,这里以“不结束计算,永远运作的漏洞”为例。含有该漏洞的程序原本应该在处理完数据计算后就停止运作,但有的数据会让它的计算永不停止。
判定该漏洞的自动调试程序会读取作为判定对象的程序及它所处理的数据,并对其进行独立的漏洞判定计算。如果得出被判定对象程序对数据进行正确的计算处理后正常结束的结论,自动调试就会输出“该程序没有漏洞”。但如果得出被判定对象程序的计算不能正常结束的结论,则会输出“该程序有漏洞”。
如果能制造出这样一个自动调试器的话,那么改造它,有意识地在它内部加入漏洞也是可能的。有漏洞的自动调试器在检测到被判定对象没有漏洞时,原本应该输出“该程序没有漏洞”,但经过改造后,就只能输出“该程序有漏洞、漏洞、漏洞……”(www.xing528.com)
那么,将该自动调试器自己的程序作为判定对象的话又会发生什么呢?是否会判定自身有漏洞呢?还是判定为正确计算后正常结束呢?在将自己作为数据读取的状态下,再读取自己为判定对象,虽然步骤上会有些复杂,但原理上是可行的。
如果自动调试器能判定自身的漏洞,那么就应该输出“该程序有漏洞”,然后结束运行。这样一来,自动调试器就算是正常结束了程序,判定它的自动调试器也应该不停地输出“该程序有漏洞、漏洞、漏洞……”才对。
而这样的话,自动调试器又变成了无法正常结束计算的程序,对它进行判定的自动监测器应当输出“该程序有漏洞”后,结束运行才对。结果就是自动调试器无法结束也无法做出结论。这就是矛盾所在。
这证明了“存在能判定程序漏洞的程序”这个假设是矛盾的,电脑修正电脑程序从原理上是不可能的,这也是图灵证明的重点。
图灵在做这个证明时,其实并不存在能按程序运作的现代电脑。在电脑还只是个梦想的时代,就已经出现了思考当电脑诞生时能否实现“智慧”这一极限思维的天才,这不得不令人惊叹于人类智慧(的最高峰)。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。