总结
我们经历了一个长而曲折的思考过程,因此值得做一回顾:
- 所有知识是临时性的,需要进行实验测试。
- 实验只能发现理论中的缺陷而永远不能“证明”它们的正确性。
- 通过累积的证据,理论成为“定律”。
- 关于什么是可证明的,什么是可计算的,或什么是可知的,有一些已知的限制。
- 科学实验的类比是软件测试。
- 程序永远不能被证明是没有缺陷的。
- 最好的测试是失败了的测试,正像最好的实验是推翻理论的实验。
- 迭代开发承认事先对准确知识的缺乏。
- 迭代与科学实验相似。
- 我们使用迭代结果通过指出需要的过程校正降低风险。
软件开发不是一门精确的科学,但是好的软件开发与好的科学有很多可比之处。特别地,借鉴数学和科学是非常有用的——就成熟性而言它们比计算机科学多了几千年的发展——这样我们就不会试图去做一些不可能的事。我们已经知道知识在实践和理论上都有极限,将大量计算能力用于这种极限的组合是无益的。
注释
1有趣的是,对地球直径最早的计算是由Eratosthenes 的一个很好的实验进行的,他生活在公元前二世纪,与Archimedes 同时代。当然这一计算是基于地球是一个球体而不是平的的观念的。Eratosthenes的结果与实际值是相当接近的。Eratosthenes还发明了确定一个数是否是质数的“筛子”。
2引自Wikipedia:“组合数学识数学的一个分支,它研究满足具体标准的物体的(有限)集合。特别地,它研究这些集合中物体的‘计数’... 尽管自二十世纪后期以来,它已经发展出了强大的理论方法,(它)却不仅关注理论的建立,同时也相当关注问题的解决。很多组合数学研究图形,所有组合数学的研究都对图形研究有所助益。”
3一些数字:直接算法可以处理大约50座城市。更复杂的算法可以处理大约近200座城市。在2001年,找到了一种可以处理德国15000座城市的解决方案,它使用了大规模计算机组。当前的最高纪录是2004年实现的处理瑞典全境大约25000个城市,也使用了令人难以置信的数量的处理器。
4"NP"表示"Non-deterministic Polynomial time"(多项式时间非确定性问题)。
5例如,一些有限状态机属于这一类别。
文章来源于领测软件测试网 https://www.ltesting.net/