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