鮑勃大叔認為軟件不同于數學,軟件是科學,科學與數學是有區別的

19-06-05 banq
                   

軟件更像是科學而不是數學。數學表達式是可證明的,科學理論只是可表明的。數學是演繹的。科學是經驗的,軟件也是經驗的。我們可表明,但不證明正確性。

Software is more like science than mathematics. Mathematical expressions are provable, scientific theories are merely demonstrable. Math is deductive. Science is empirical. Software is empirical. We demonstrate, but do not prove, correctness.

banq評論:軟件是經驗的,也就是通過經驗積累表明只有某些方式行得通,但是無法證明為什么只有這種方式才行得通,后者是因果關系的證明,是數學問題。通過不斷失敗摸索,將軟件系統扶上墻運行起來了,然后開始燒香拜神,不要死機啊!這些都是經驗的特點。

鮑勃大叔是軟件工程與MF齊名的大師,他們的觀點與麻省理工等學院派還是有些區別,學院派更注重算法和數據結構,這兩者偏重數學,而經驗派偏重最佳實踐,只有這條路好走無疑是最佳實踐,是模式,上升為框架和架構。

                   

8
conquersky
2019-06-05 15:23

軟件是一門藝術!

sinaID94424
2019-06-06 16:08

和 黑客和畫家里的話一樣,編碼是漸進的,不是一開始就設計好的,設計的再漂亮,該踩的坑一個不少。

banq
2019-06-07 07:55

鮑勃大叔繼續補充道:

Types==propositions.?

Programs==proofs.?

Execution==simplification.?

Test==hypothesis.?

Code==experiment.?

Run==observation.

類型==科學命題

程序==科學證據

執行==簡化

測試==假說

代碼==科學實驗

運行==科學觀察

banq
2019-06-07 17:16

鮑勃大叔繼續說:

靜態類型是試圖使軟件更具數學性,類型正確性是演繹和可證明的。但是,類型正確性并不意味著行為正確。即使完全類型正確,也必須憑經驗證明行為。

但這不會使類型系統變得無用。相反,許多人發現類型系統是非常寶貴的。但是,它并不意味著類型系統會將軟件從科學變為數學,最后,軟件仍然是一種經驗科學。

科學理論通過實驗證明,只有系統穩定運行后才是支持理論的證據,即使有偶爾錯誤也可以容忍。

在軟件中,這些科學實驗就是軟件測試,我們通過執行足夠的測試來證明正確性,以便將我們的信心提升到一個我們感覺到可以安全部署了。

因此,測試多少與類型無關,您編寫和執行的測試數量不受您的語言類型系統的影響。

每個功能特征都是一個理論。每一個這樣的理論都通過一系列科學試驗形式的實驗來驗證。如果你可以編寫一個特征理論的代碼,你可以編寫測試,這些實驗就是表明支持這個特征功能。

評:當然學院派不滿意上述這套說服,搬出了麻省理工的“ 類型和編程語言”這本教科書來駁斥。。。。。

?

2Go 1 2 下一頁
美女漫画大全