最有價值的編程忠告[轉CSDN]

Rob Pike,目前谷歌公司最著名的軟件工程師之一,曾是貝爾實驗室Unix開發團隊成員,Plan9操作系統開發的主要領導人,Inferno操作系統開發的主要領導人。他是締造Go語言和Limbo語言的核心人物。下面是他分享給大家他在貝爾實驗室工作的一段經歷,這段經歷改變了他對bug調試的思想認識。

Rob Pike

Rob Pike

Job的主要工作經歷:

我在貝爾實驗室工作了很多年。我在計算機科學研究中心,你會很詫異,這是個很小的實驗室,但這裏卻創造了Unix,我來到這裏工作的時候Unix已經發布了第七版。從2002年起我來到谷歌工作,主要開發一些系統基礎架構。

最主要的成就:

我最爲人所知的應該是我和Brian Kernighan(Unix開發組的重要成員)合著的兩本書:《The Unix Programming Environment》 和 《程序設計實踐(The Practice of Programming)》 (30年後的今天仍在印刷出版!),影響範圍最廣的一件事應該是我和Ken Thompson共同開發完成了UTF-8編碼格式。在其它方面,諸如計算機圖形,操作系統,軟件開發工具等上也做了大量的工作,最近在給谷歌開發Go編程語言。

使用最多的編程語言:

長久以來,C語言是我編程的選擇,但在我的編程生涯裏,我使用過很多種語言。而目前我開發的東西基本上都是用Go語言,這是我見過的最高效的一種編程語言,它在我的工具箱裏已經完全取代了C語言的位置。

忠告:

在我加入貝爾實驗室一年多後,我開始和Ken Thompson一起在開發一個針對由Gerard Holzmann設計的很小的圖形化交換語言的即時編譯器上做結對編程。我打字比較快,所以我坐在電腦前,Ken站在我身後看我編程。我們開發的很快,但經常會遇到問題,而且可以看出來出錯了——畢竟這是一個圖形化的編程語言。當程序出錯時,我本能的一頭扎進問題,檢查報錯跟蹤信息,添加調試打印語句,啓動調試器,等等,但Ken只是站在那思考,完全不理會我也不查看我們寫的出問題的代碼。一段時間後我發現一個規律,Ken經常會比我先找到問題出在什麼地方,而且會突然的喊一嗓子,“我知道什麼地方的問題了。”每次他的判斷都很準確。我認識到,Ken已經在腦海裏構建了代碼的模型,當有問題出現時,那是他腦子裏的模型出了問題。在思考爲什麼會發生這些錯誤時,他能憑直覺找到模型中什麼地方不對或發現寫的代碼跟這個模式什麼地方有出入。

Ken教會了我一個極其重要的習慣:糾錯前先思考。如果你一頭扎進問題中,你可能只解決了當前出現問題的代碼,但如果你先思考這個錯誤,這個bug是怎麼引入的?你通常發現和糾正一個更高層次的問題,進而改進了系統設計,防止了更多bug的出現。

我認識到這種編程思考模式非常的重要。有些人癡迷於一行行的、使用各種工具來調試所有的東西。但我現在相信,思考——不看代碼的思考——是最好的調試途徑,因爲它能讓你開發出更好的軟件。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章