|
英文原文:"The Best Programming Advice I Ever Got" with Rob Pike
Rob Pike,目前谷歌公司最著名的軟件工程師之一,曾是貝爾實驗室 Unix 開發團隊成員,Plan9 操作系統開發的主要領導人,Inferno 操作系統開發的主要領導人。他是締造 Go 語言和 Limbo 語言的核心人物。下面是他分享給大家他在貝爾實驗室工作的一段經歷,這段經歷改變了他對 bug 調試的思想認識。
Job 的主要工作經歷:
我在貝爾實驗室工作了很多年。我在計算機科學研究中心,你會很詫異,這是個很小的實驗室,但這里卻創造了 Unix,我來到這里工作的時候 Unix 已經發布了第七版。從 2002 年起我來到谷歌工作,主要開發一些系統基礎架構。
最主要的成就:
我最為人所知的應該是我和 Brian Kernighan (Unix 開發組的重要成員)合著的兩本書:《The Unix Programming Environment》 和 《程序設計實踐(The Practice of Programming)》 (30年后的今天仍在印刷出版!),影響范圍最廣的一件事應該是我和 Ken Thompson 共同開發完成了 UTF-8 編碼格式。在其它方面,諸如計算機圖形,操作系統,軟件開發工具等上也做了大量的工作,最近在給谷歌開發 Go 編程語言。
使用最多的編程語言:
長久以來,C語言是我編程的選擇,但在我的編程生涯里,我使用過很多種語言。而目前我開發d 東西基本上都是用 Go 語言,這是我見過的最高效的一種編程語言,它在我的工具箱里已經完全取代了C語言的位置。
忠告:
在我加入貝爾實驗室一年多后,我開始和 Ken Thompson 一起在開發一個針對由 Gerard Holzmann 設計的很小的圖形化交換語言的即時編譯器上做結對編程。我打字比較快,所以我坐在電腦前,Ken 站在我身后看我編程。我們開發的很快,但經常會遇到問題,而且可以看出來出錯了 —— 畢竟這是一個圖形化的編程語言。當程序出錯時,我本能的一頭扎進問題,檢查報錯跟蹤信息,添加調試打印語句,啟動調試器,等等,但 Ken 只是站在那思考,完全不理會我也不查看我們寫的出問題的代碼。一段時間后我發現一個規律,Ken 經常會比我先找到問題出在什么地方,而且會突然的喊一嗓子,“我知道什么地方的問題了。”每次他的判斷都很準確。我認識到,Ken 已經在腦海里構建了代碼的模型,當有問題出現時,那是他腦子里的模型出了問題。在思考為什么會發生這些錯誤時,他能憑直覺找到模型中什么地方不對或發現寫的代碼跟這個模式什么地方有出入。
Ken 教會了我一個極其重要的習慣:糾錯前先思考。如果你一頭扎進問題中,你可能只解決了當前出現問題的代碼,但如果你先思考這個錯誤,這個 bug 是怎么引入的?你通常發現和糾正一個更高層次的問題,進而改進了系統設計,防止了更多 bug 的出現。
我認識到這種編程思考模式非常的重要。有些人癡迷于一行行的、使用各種工具來調試所有的東西。但我現在相信,思考 —— 不看代碼的思考 —— 是最好的調試途徑,因為它能讓你開發出更好的軟件。
it知識庫:Rob Pike:最有價值的編程忠告,轉載需保留來源!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。