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