检验和证明

Wolfram 语言的每个版本在发行以前都进行了大量的测试. 其中大多数测试通过以 Wolfram 语言写成的自动系统来进行.

自动系统给 Wolfram 语言提供数百万个输入,并检查从中得到的输出的正确性. 在做这样的测试时,常常有一些精妙之处:人们必须说明随机算法的不同行为的原因和不同计算机的机器精度的差别等问题.

自动系统使用的测试输入用几种方法获得:

  • 对于每个 Wolfram 语言函数,输入被设计用于普通的和极端情形.
  • 输入被设计用于内部代码的每个特征.
  • Wolfram 语言文档系统中的所有例子和其它有关 Wolfram 语言书中的例子被使用.
  • 测试是从数学基准构建的,而测试集合是从大量的网站构建的.
  • 标准的数值表被光学扫描作为测试输入.
  • 来自所有的标准数学表中的公式被输入.
  • 教科书中的练习被输入.

当测试运行时,自动测试系统不仅检查结果,还检查辅助的事项. 诸如:信息、内存使用和速度等.

还有一个特殊的装有仪器的 Wolfram 语言版本. 它被建立用于执行内部一致性检验. Wolfram 语言的这个版本以真实的 Wolfram 语言的速度的一小半的速度运行,每一步都检查内部的一致性,中断能力等等.

该 Wolfram 语言版本还记录 Wolfram 系统源代码的哪一部分已经被访问,允许人们认可 Wolfram 语言中的所有函数已经被给定的检验测试过.

所有标准的 Wolfram 语言测试被例行地在 Wolfram 语言每个版本、在不同计算机上运行. 根据计算机系统的速度,这些测试花费计算机几个小时到几天的时间.

但是,即使有这么多检验,在 Wolfram 语言这样复杂的系统中仍不可避免地存在着错误.

Wolfram 语言的正确性标准肯定比典型的数学证明高得多. 但正如一个很长的证明不可避免的包含错误并且多年来没有被检查出来一样,像 Wolfram 语言这样的复杂软件系统也将包含错误,甚至数百万人使用了它还检查不出来.

不管怎样,毕竟已经做了这么多测试,用户在自己的工作过程中发现 Wolfram 语言的错误的概率是极低的.

很可能有许多次 Wolfram 语言做了用户不期望的事情. 但应该认识到,这样的事情发生,大多数是因为用户的输入或者某种理解出了错误,而不是 Wolfram 系统的内部代码本身的问题.

如果用户确信自己发现了 Wolfram 系统中的真正的错误,那么应当与 Wolfram Research Technical Support 联系,以便该错误能在将来的版本中被纠正.