我記得這個問題,我寫過。而且我還專門寫了一篇文章來回答這個問題。
看看我當時是有多無聊!哈哈……今天再來回答一遍這個問題。
這個問題一看就知道不是程序員提問的,程序員都知道是怎么回事。一定是一個外行人的提問。
所以,對外行解釋程序中 Bug ,不能說的太專業,我講兩個故事源碼,外行人看了就明白了。
第一個故事:為啥你家裝修完了,你總是不滿意呢?
很多裝修過房子的人都知道,裝修房子的過程有多辛苦,多操勞,裝修完了總是還有很多不滿意和缺憾。
從交房的那一刻起,你就開始尋找設計師(跟設計軟件的設計師異曲同工),開始根據你家房子的尺寸和構造,朝向和你平時的生活習慣,儲藏東西的多少,進行房主的需求挖掘,這里相當于軟件的產品經理。設計師根據你的需求設計工程圖紙和設計效果圖(這里相當于軟件設計完了)。你感覺設計的不錯,好開工,水電工,瓦工,木工,油漆工,開始進場,根據效果圖施工(這里的各種工互相配合,互相銜接,相當于軟件中的前端和后臺等工程師敲代碼配合開發)。
施工完了,得有工程監理和業主驗收,相當于開發中的測試。
到這里看起來很正常,但是,可能水電改的有點瑕疵,少了一個插座,你不滿意了,可能油漆有的地方涂抹不均勻,你也不滿意了,可能木工打的柜體,磕碰了一點,你也不滿意了。這就是程序中的 bug 。
你怎么不說,裝修不能給我一次性裝修好呢?看看有多少工程銜接,各種工種配合,你能保證一點問題沒有么?生活中處處都有不完美的地方,干什么活有十全十美的東西呢?
你這只是驗收(相當于開發中的測試)的時候發現的問題,等你真正入住的時候,真正生活的時候,可能還會發現各種當初對設計不滿意的地方,很多東西等真正用的時候,才發現當初應該這么設計(這也算 bug)。
第二個故事:不按常理出牌
你在使用一個產品的時候,人家明明有說明書,有使用步驟,你作為用戶,就是反著操作,比如:使用高壓鍋的時候,明明得先放氣,才能掀開鍋蓋,你非先掀開鍋蓋。意外發生了源碼,嗖一下炸了!這就是程序中的崩潰,屬于大 bug 。
人家設計程序的時候是有一套邏輯和操作步驟的,但是呢,用戶不清楚,就知道瞎按,瞎操作,眾口難調,用戶幾十萬的產品,每個用戶操作流程都不給你按照設計的來操作,就容易導致程序出 bug ,甚至崩潰!你說程序員能把所有的情況想到么?
還不是盡量想,想不到的等出了問題才能知道,才能修改!
最后,編程哪有想象的那么容易啊!作為程序員,自編程伊始,Bug 就會如影隨形,因為它就是你的影子。Bug 就是軟件的影子,和軟件就是與生俱來的,是不可逃脫的好 CP,有著難舍難分的好感情。Bug 無處不在,對于程序員的酷愛,超越程序猿的老婆,它對于軟件的癡迷,比程序猿還要厲害,即使再牛逼的程序猿也逃脫不了 Bug 的魔掌。