程序测试和科学实验
很多人都看不明白科学实验里面存在的逻辑问题,所以盲目相信科学实验。他们不明白为什么经过了科学实验“证实”的理论,居然还可以是错的。其实如果你明白程序测试的原理,就能明白科学实验的本质。比如我的《测试的道理》一文中提到的那些问题。
简言之,科学理论就像一个程序,而科学实验就是一些测试,用于“验证”这个程序的正确性。比如写一个计算乘法的程序,是这样 (x, y) => x + y。如果测试给它输入 (2, 2) 就得到结果 4,所以你就认为它确实是一个做乘法的程序。那你就错了。必须要对“所有可能的输入”都得到正确结果,才能算证实了它是正确的。我们无法测试所有可能的输入,所以测试其实永远无法保证程序是正确的。再多的测试通过了,都不能说程序就是正确的。
对于科学理论也是一样,它必须对所有可能的输入情况都得到正确的结果,才能叫做“证实”了。常见的一个误区,就是在特定的环境,只做了一个实验,就说已经验证了一个科学理论。这就像之前的程序,给了它 (2, 2) 得到 4,就以为它正确了一样。有些时候你给它成千上万的输入,它都给出正确结果。但某天出现一个从未见过的输入,它就可能会错。
这就是所谓科学的“可证伪性”。很多人把可证伪性作为科学的特征,说不符合这个特征的就不叫科学。用程序测试作为类比,我们可以看出这个说法是不大对的。可证伪性说明了科学实验的局限性,但它并不能作为“科学”的定义来使用。
程序测试的限定条件越多,测试本身越复杂,就越是难以说明程序的正确。科学实验也是一样。实验的限定条件越多,实验设备越复杂,就越难说明科学理论的正确性。也许可以说“说服力”就越弱。
这就是为什么我不能接受爱因斯坦的相对论,因为用于测试它的实验太少,实验的环境太过特殊,没有普遍性。验证相对论的经典实验,常常是百年才出现一次机会,所以其他人无法验证。至今没有任何实际应用使用了相对论,传说中唯一的应用(GPS 定位系统),其实并不需要相对论就能实现。相对论的前提“光速不随光源的运动而改变”,也只在特定环境,用很复杂的装置做了一个实验,就被作为了永久的真理。很多的医学理论也是类似,只做了一个实验,就把它作为了真理。以后的人只是引用它,极少有人去独立核实这些实验。
这也许就是为什么相对论被称为“论”(theory),而牛顿定律被称为“定律”(law)。因为牛顿定律被实验和实际应用不断验证,每一分每一秒,就没有一个出错的。所以我们认为牛顿定律有很高的可靠性,把它叫做“定律”。
但就像程序测试无法保证程序完全正确一样,我们永远无法用实验来证明牛顿定律是完全正确的。我们应该用像对待程序测试的态度来对待科学实验,不要盲目相信做了实验就证明了一个理论。
