摘要??計算機的錯誤計算(十五)中歷史事件給我們的啟示或警示。
? ? ? ?計算機的錯誤計算(十五)介紹了歷史上發生的一些事件。從這些事件我們可以得到一些啟示或警示。? ?
? ? ? ?若不是油氣平臺的沉沒,設計者會得出精度低了嗎?若沒有失去士兵的生命,能在乎一丁點累積誤差嗎?若證券交易所的指數預先不知曉,可以想到軟件會計算錯誤嗎?若經濟數據不是多年前的,能發現軟件包給出的答案錯得離譜嗎?顯然不能!這些工程師們都是“事后諸葛亮”。
? ? ? ?能成為“事前諸葛亮”嗎?不太容易。
? ? ? ?為了讓大家成為“事前諸葛亮”,針對軟件的計算不穩定問題,美國國家標準與技術局(NIST)制定了一個“統計參考數據集”,以幫助測試統計軟件的正確性。甚至為了得到15位“經驗證的的結果(certifed values)”,不惜采用高達500位的多精度計算(multipleprecision calculations)[1]。
? ? ? ?在我們國家,對于這個影響航天嵌入式軟件可信的因素[2],雖然有個別人員針對一些模型給出了相應的解決方案[3],但是,在這“軟件定義汽車,軟件定義一切”的時代,又有幾人注意到這個問題?
? ? ? ?教科書中也只是講語法、算法、邏輯;很少涉及混沌、病態、錯數[4]。由于后者的存在,有時不得不用內存膨脹極快的“符號計算”代替數值計算。
? ? ? ?最后,程序是否可能產生蝴蝶效應?這是我們應該注意的一個問題。
? ? ? ?對于一層循環程序,可以通過?ISReal --- 程序病態模型檢驗器?檢查其是否會輸出錯誤結果。
參考文獻
[1] McCullough B D, ?Vinod H D. The Numerical Reliability of Econometric Software. Journal of Economic Literature, 1999, 37(2): 633--665
[2]?楊孟飛, 顧斌, 郭向英, 等. 航天嵌入式軟件可信性保障技術及應用研究. 中國科學: 技術科學, 2015, 45(2): 198–203
[3]?傅秀濤, 綦艷霞, 陳朝暉. 航天嵌入式軟件浮點運算誤差分析與控制. 空間控制技術與應用, 2015, 41(4): 54--57, 62?
[4] 趙世忠, 陳冬火, 劉靜. 循環迭代程序的一種可信計算算法. 軟件學報, 2020, 31(12): 3685-3699