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