總結
我們經歷了一個長而曲折的思考過程,因此值得做一回顧:
- 所有知識是臨時性的,需要進行實驗測試。
- 實驗只能發現理論中的缺陷而永遠不能“證明”它們的正確性。
- 通過累積的證據,理論成為“定律”。
- 關于什么是可證明的,什么是可計算的,或什么是可知的,有一些已知的限制。
- 科學實驗的類比是軟件測試。
- 程序永遠不能被證明是沒有缺陷的。
- 最好的測試是失敗了的測試,正像最好的實驗是推翻理論的實驗。
- 迭代開發承認事先對準確知識的缺乏。
- 迭代與科學實驗相似。
- 我們使用迭代結果通過指出需要的過程校正降低風險。
軟件開發不是一門精確的科學,但是好的軟件開發與好的科學有很多可比之處。特別地,借鑒數學和科學是非常有用的——就成熟性而言它們比計算機科學多了幾千年的發展——這樣我們就不會試圖去做一些不可能的事。我們已經知道知識在實踐和理論上都有極限,將大量計算能力用于這種極限的組合是無益的。
注釋
1有趣的是,對地球直徑最早的計算是由Eratosthenes 的一個很好的實驗進行的,他生活在公元前二世紀,與Archimedes 同時代。當然這一計算是基于地球是一個球體而不是平的的觀念的。Eratosthenes的結果與實際值是相當接近的。Eratosthenes還發明了確定一個數是否是質數的“篩子”。
2引自Wikipedia:“組合數學識數學的一個分支,它研究滿足具體標準的物體的(有限)集合。特別地,它研究這些集合中物體的‘計數’... 盡管自二十世紀后期以來,它已經發展出了強大的理論方法,(它)卻不僅關注理論的建立,同時也相當關注問題的解決。很多組合數學研究圖形,所有組合數學的研究都對圖形研究有所助益!
3一些數字:直接算法可以處理大約50座城市。更復雜的算法可以處理大約近200座城市。在2001年,找到了一種可以處理德國15000座城市的解決方案,它使用了大規模計算機組。當前的最高紀錄是2004年實現的處理瑞典全境大約25000個城市,也使用了令人難以置信的數量的處理器。
4"NP"表示"Non-deterministic Polynomial time"(多項式時間非確定性問題)。
5例如,一些有限狀態機屬于這一類別。
文章來源于領測軟件測試網 http://www.kjueaiud.com/