除蟲(Debug)是每個寫程式或做設計的人也必須要懂的基本求生技巧。沒有人可以落筆永不犯錯﹐所以去找出錯誤並加以修正是必經的階段。這個除蟲的過程很多時間痛苦而漫長﹐特別是那隻蟲在別人的傑作裏面。我自小玩寫程式和砌電腦﹐大學時讀工程系﹐出來做時是當工程師﹐無不是和蟲打交道。不是自賣自跨﹐我對抗蟲害經驗豐富﹐除蟲快而準。很多時候我覺得除蟲不單要腦筋好﹐還要有點除蟲的藝術才能夠有效率。但說起來我除蟲好像沒有什麼特別方法﹐也沒有什麼可靠的系統可言。就像語文那樣是與生俱來的能力﹐自己懂如何去做﹐但很難教別人如何除蟲。Debugging這本書正好填補這個空位﹐很有系統地歸納出除蟲九大定律。
這書的作者畢業於MIT﹐在科技行業工作多年﹐是很有經驗的工程師。他見市面上完全沒有關於除蟲的書﹐於是把多年的除蟲心得整理寫下來﹐希望可以幫助後輩掌握除蟲技巧。書中依次例出除蟲九大定律﹐每一定律也有詳細解說﹐並且附以作者經驗的真實案例去說明應用。最後幾章將所有定律融會貫通﹐展視給讀者由發現問題到找出錯誤﹐如何把定律綜合整個除蟲過程。最後一章很特別﹐從helpdesk的角度出發﹐把定律在他們的眼中演譯一次。對在helpdesk當技術支援的人故然有用﹐對打電話去helpdesk救助的人﹐即是其他所有人也有幫助。知道helpdesk如何運作﹐配合他們想要的資料﹐才能更快解決問題。
我把除蟲九大定律翻譯出來﹐給大家作一個簡介﹕
1. 徹底明白系統的運作。如不明白﹐請先把使用手冊由頭到尾讀一次。
2. 讓系統失靈。系統失靈是除蟲的第一條線索﹐看不見失靈就找不到蟲。
3. 不要靠估﹐要看清楚那兒出錯。除蟲的精髓不在於要估得準﹐
而是如何去減少估錯的機會﹐一估錯就會浪費很多時間行錯路。
4. 分而攻之。把蟲出沒的笵圍收窄﹐如是者就會找到蟲的位置。
5. 每次只改一樣。一次過改太多﹐不單不能除蟲﹐還有可能產生新的蟲。
6. 所有事也要有記錄。沒有詳細的記錄﹐就沒有足夠的資料去除蟲
7. 看看有沒有插電掣。最安全的地方就是最危險的地方﹐
最白痴最顯眼的錯誤﹐往往最容易被忽略看不見。
8. 不要鑽牛角尖﹐想不到就要虛心問人。
9. 試清楚修正是否有效。很多時候以為找到蟲錯誤修正好就完工﹐
只不過恰巧那些好彩沒有遇上問題﹐蟲還是好端端在那兒等下次再咬人。
雖然我在看這本書時﹐不禁想這除蟲九大定律只不過是簡單常識﹐任何寫過程式的人也必定無師自通學會。可是回顧一下我的除蟲經驗﹐久不久我自己也會一時大意違反這些定律﹐弄得團團轉不知如何去解決。現在有人很有系統地寫了出來﹐不單讓我更深刻記得這些除蟲定律﹐還可以讓我很精確地把除蟲技巧教人﹐不會自己懂但找不到言語形容的煩惱。這本書奉送除蟲九大定律的海報﹐我特別印了出來貼在我的工作間。當自己找不到蟲毫無頭緒時﹐抬頭細看這九大定律﹐回想自己違反了那條﹐警惕自己改過﹐很快就可以找到害蟲。當別人問我有關除蟲的問題時﹐我可以很省氣力地著其中一條回答他。不論是除蟲新仔還是經驗老手﹐這本書應被奉為除蟲寶典﹐任何設計程式或硬件的人也應該要讀一遍。