大多數的人都不會寫程式,這並不稀奇,因為大多數的人,也都不是作家,每個人,都有自己專業謀生的領域,即便是遊民,也要懂街頭生活的法則,才能生存下去,離開了熟悉的生活環境,每個人都免不了要受挫。
但其實,大多數的人,其實早就體驗過程式運作的邏輯,只是他們不知道這件事,舉例來說,去銀行辦開戶,就是一套固定流程,一定要正確填寫表格,否則銀行員絕對不會受理,如果格式正確,行員接下來就要照規則操作。
程式碼,就是這樣的邏輯,一切只會遵照寫好的規則運作,但如果程式寫錯了,就代表規則的實作有錯,會產生不想要的後果,舉銀行做例子,行員開戶成功後,應該把文件放在開戶專用的櫃子,而不是出入帳的櫃子,否則,將來要調出文件時,在正確的櫃子反而會找不到...
人會因為各種原因出錯,但運作中的程式除非是機器壞了,否則絕對會照設計運作,只是能運作的程式,不代表一定產生正確的結果。
想想看,如果行員有文件需要A部門主管簽署,他走去B部門,一定會退回來。如果程式寫好一個A功能,需要的輸入資料是A格式,但是並沒寫檢查資料格式的程式碼。萬一,有人輸入了B格式的資料,程式會拿不應該使用的B格式資料去計算,這種情況,就像現實生活中,有人拿開戶文件去辦存款,行員當然不會給你過,程式可不管。
用寫程式的術語來說,這叫做資料格式錯誤,會引發未知行為,因為除非了解程式碼,否則無法知道為產生什麼樣的後果,有時程式會因此當機,但這還不算是最麻煩的狀況。
程式出錯最可怕的是,有可能引發一連串的錯誤,引發大風暴。
想想看,你用網路銀行存款,結果程式出錯,把你的錢計算錯了,戶頭的錢反而減少,萬一兩天後,你購買的股票,要付交割款了,銀行存款不足,那麼,你就會違約交割...
這還只是個人的問題,如果股票交易所提供的即時股價是錯的,大盤指數異常下殺,引發交易戶恐慌,那麼大量拋售股票的行為,會造成大麻煩。
這一篇,不是要嚇唬大家程式很恐怖,而是要告訴大家,電腦一點也不聰明,他就是執行程式碼的機器,程式碼的本質是一板一眼的規則。電腦絕對忠實,但如果執行考慮不周全的程式碼,在某些情況,它就可能會做出錯誤的行為。























