谷歌大牛 Rob Pike 的 5 個(gè)編程原則
簡(jiǎn)介:
Rob Pike,目前谷歌公司***的軟件工程師之一,曾是貝爾實(shí)驗(yàn)室Unix開發(fā)團(tuán)隊(duì)成員,Plan9操作系統(tǒng)開發(fā)的主要領(lǐng)導(dǎo)人,Inferno操作系統(tǒng)開發(fā)的主要領(lǐng)導(dǎo)人。他是締造Go語(yǔ)言和Limbo語(yǔ)言的核心人物。下面是他分享給大家他在貝爾實(shí)驗(yàn)室工作的一段經(jīng)歷,這段經(jīng)歷改變了他對(duì)bug調(diào)試的思想認(rèn)識(shí)。
主要工作經(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)到谷歌工作,主要開發(fā)一些系統(tǒng)基礎(chǔ)架構(gòu)。
最主要的成就:
我最為人所知的應(yīng)該是我和Brian Kernighan(Unix開發(fā)組的重要成員)合著的兩本書:《The Unix Programming Environment》 和 《程序設(shè)計(jì)實(shí)踐(The Practice of Programming)》 (30年后的今天仍在印刷出版!),影響范圍最廣的一件事應(yīng)該是我和Ken Thompson共同開發(fā)完成了UTF-8編碼格式。在其它方面,諸如計(jì)算機(jī)圖形,操作系統(tǒng),軟件開發(fā)工具等上也做了大量的工作,最近在給谷歌開發(fā)Go編程語(yǔ)言。
下面是 Rob Pike 的 5 個(gè)編程原則
原則 1. 你沒(méi)有辦法預(yù)測(cè)每個(gè)程序的運(yùn)行時(shí)間,瓶頸會(huì)出現(xiàn)在出乎意料的地方,所以在分析瓶頸原因之前,先不要盲目猜測(cè)。
原則 2. 測(cè)試(measure)。在測(cè)試之前不要優(yōu)化程序,即使在測(cè)試之后也要慎重,除非一部分代碼占據(jù)絕對(duì)比重的運(yùn)行時(shí)間。
原則 3. 花哨的算法在 n 比較小時(shí)效率通常比較糟糕,而 n 通常是比較小的,并且這些算法有一個(gè)很大的常數(shù)。除非你確定 n 在變大,否則不要用花哨的算法。(即便 n 不變大,也要先遵循第 2 個(gè)原則。)
原則 4. 相對(duì)于樸素的算法來(lái)說(shuō),花哨的算法更容易出現(xiàn)Bug,更難調(diào)試。盡量使用樸素的算法和數(shù)據(jù)結(jié)構(gòu)。
原則 5. 數(shù)據(jù)占主導(dǎo)地位(Data dominates)。如果你選擇了正確的數(shù)據(jù)結(jié)構(gòu),并且已把事情組織好,那么算法的效率顯而易見(jiàn)。編程的核心是數(shù)據(jù)結(jié)構(gòu)是,不是算法。
Pike的第 1 條和第 2 條原則實(shí)際上重新強(qiáng)調(diào)了Tony Hoare那句名言,“過(guò)早的優(yōu)化是萬(wàn)惡的根源”。Ken Thompson將Pike的第 3 條和第 4 條原則改寫為“當(dāng)遇到麻煩時(shí),試試最簡(jiǎn)單粗暴的辦法”,原則 3 和原則 4 也是 KISS 哲學(xué)的體現(xiàn)。Fred Brooks在《人月神話》中首先闡述了原則 5 ,原則 5 常常會(huì)被概括為“用***結(jié)構(gòu),寫簡(jiǎn)單代碼”。
原文鏈接: utexas.edu 翻譯: 伯樂(lè)在線 - makttub