我清楚地感到在很多人头脑里,“科学理论”与“科学定律”的区别是混乱的,他们感到疑惑:“科学理论需要什么才能被认为是真实正确的?”
我将尝试解释为什么这是一个错误的问题,因为我们永远无法用实验来“证明”一个理论。我将通过深度探讨科学证明的本质进行解释。然后我将说明这些原则可以怎样以一些有趣而出乎意料的方式应用到软件开发中。
背景
当你寻找解释某事的理论时,最好的情况是你找到了一个非常通用的理论。也就是,你的理论在任何时候,任何情况下,无一例外地都是适用的。如果你找到了这样一个理论,你可以这样开始描述它:“以下的结论是永远真实的。。。”
实际上,尽管科学研究已经持续了几千年,我们只有非常少的这种永远真实理论。几乎所有理论有其“应用范围”。例如,今天我们知道牛顿于十七世纪建立的经典力学理论在我们达到原子级时就不再适用了。在原子级上,经典理论不再作出精确的预测,我们需要另一种理论,量子力学,来解释发生的现象。类似地,在速度与光速相比非常低的时候,经典理论可以很好工作;当达到或接近光速时,我们需要爱因斯坦的狭义相对论进行预测。因此,需要注意理论只在特定领域里是“正确”或“非常接近正确”的。在这一领域外我们就需要其它理论,而该理论的适用范围可能包含也可能不包含原理论的适用范围。因此有时我们有一些“更通用”的理论,其他的理论只在某些限制条件下是正确的。
当然,如果你有一个你相信是“通用”的理论——也就是,它适用于所有情况——你必须对它进行测试。科学在本质上是一种实验过程,而测试一个通用理论包括逐渐扩大边界,持续消除限制条件,以证明理论确实对所有情况都是适用的。