科技.人文聯合講座/盡信軟體,不如無軟體
最近趙坤茂教授寫了一篇文章〈盡信導航,不如無導航〉,我因此想起要寫這篇文章。因爲很多人對軟體有一種迷思,以爲軟體是不會錯的,其實不然。
我們從小算盤說起,每一個電腦都有小算盤這個玩意兒,可以計算加減乘除,也能開各種根號,算各種指數,實在很厲害。我們幾乎可以說,這個軟體是沒有錯的,隨便你輸入什麼數字,運算的結果都是正確的。
可是我們的電腦中其他軟體就可能會無緣無故地出問題,不該登出時就忽然被登出。有的時候軟體會忽然拒絕接受任何指令,對使用者來說,電腦當機了。我現在要和各位談談,究竟電腦爲何當機。要注意,電腦當機不是什麼了不起的事,因爲將電腦關機後重新開機,多半是會恢復正常的。如果電腦當機是內部的硬體出問題,那就根本不可能恢復正常了。可見得電腦當機,往往是電腦裡的作業系統出了問題。
何謂作業系統?作業系統者,乃管理電腦中一切運作的軟體。舉例來說,我們在打字期間,忽然要看一個訊息;電腦非常聰明,它可以幫助我們暫時放下打字的工作,去看那個訊息。從前的電腦多半是給使用者做一些計算的工作,現在的電腦好可憐,它要讓使用者和外界通訊、看影片、儲存資料、上傳資料、下載資料等等,所以現在的作業系統都非常複雜,因此有的時候會發生錯誤而造成當機。
一個軟體完成以後,必須經過一個偵錯的步驟。偵錯的方法永遠是灌入大量不同的輸入資料,看看答案是否正確。一旦答案錯了,就知道程式需要修改。簡單的軟體,所謂不同的輸入資料數目也不會太多;有的工業用軟體偵錯的不同輸入可能到達三千種,三千種資料中,如果有一個造成錯誤,這個程式仍然要修改。麻煩的是,作業系統的偵錯就十分困難了,因爲我們實在很難模擬使用者在使用電腦時所可能發生的種種狀況。所以我們可以說,作業系統是無法徹底偵錯的,漏洞總會存在。
現在大家常提起自動駕駛汽車,這種汽車內當然會有一個軟體,這個軟體比電腦的作業系統更難偵錯,因爲它要處理千奇百怪可能發生的事情。一隻狗忽然跑出來、前面忽然發生車禍等等,都可能在處理中發生錯誤。
我自己就有一個可怕經驗,冬天開車經過一座陸橋,陸橋上一大堆雪忽然掉到我的前擋玻璃,我當時什麼都看不見。我稍微加速了一下,雪就被甩掉一些。我當時如果慢下來,雪反而會堆在玻璃上,更加危險。如果自駕車開到新竹縣尖石鄉,那裡的路不停地大轉彎,也會忽然起大霧,稍有差錯就會掉下深谷。問題是,自駕車的控制軟體可以偵錯嗎?設計的人可以想到所有在世界各地可能發生的事件嗎?
盡信軟體,不如無軟體,要小心啊!(作者爲清大榮譽教授、博幼社會福利基金會榮譽董事長)