Rob Pike:我得到的最有價(jià)值的編程建議
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ā)出更好的軟件。
英文原文:"The Best Programming Advice I Ever Got" with Rob Pike
本文鏈接:http://www.aqee.net/the-best-programming-advice-i-ever-got-rob-pike/