最有價值的程式設計忠告

2021-06-11 05:28:55 字數 1393 閱讀 2593

rob pike,目前谷歌公司最著名的軟體工程師之一,曾是貝爾實驗室unix開發團隊成員,plan9作業系統開發的主要領導人,inferno作業系統開發的主要領導人。他是締造go語言和limbo語言的核心人物。下面是他分享給大家他在貝爾實驗室工作的一段經歷,這段經歷改變了他對bug除錯的思想認識。

job的主要工作經歷:

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

最主要的成就:

我最為人所知的應該是我和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的出現。

我認識到這種程式設計思考模式非常的重要。有些人痴迷於一行行的、使用各種工具來除錯所有的東西。但我現在相信,思考——不看**的思考——是最好的除錯途徑,因為它能讓你開發出更好的軟體。

最有價值的程式設計忠告

發表於 2012 08 20 09 15 17849次閱讀 aqee 佚名研發實踐 gounix 結對程式設計 程式語言 摘要 本文是來自貝爾實驗室plan 9作業系統的創始人rob pike給大家分享的程式設計忠告!rob pike,目前谷歌公司最著名的軟體工程師之一,曾是貝爾實驗室unix開發團...

什麼知識最有價值

什麼知識最有價值 what knowledge is of most worth?這是十九世紀著名教育學家和哲學家斯賓塞很著名的乙個主題,對於二十一世紀的個人更具有重要的意義。下下功夫,你也可以在網際網路上找到如何製作炸藥,製作飛彈的方法。澳大利亞的乙個老兄曾經通過網際網路製造乙個能夠打一百多公里的...

什麼知識最有價值

什麼知識最有價值 what knowledge is of most worth?這是十九世紀著名教育學家和哲學家斯賓塞很著名的乙個主題,對於二十一世紀的個人更具有重要的意義。下下功夫,你也可以在網際網路上找到如何製作炸藥,製作飛彈的方法。澳大利亞的乙個老兄曾經通過網際網路製造乙個能夠打一百多公里的...