羅伯伯是Unix的先驅,是貝爾實驗室最早和Ken Thompson以及 Dennis M. Ritche 開發Unix的猛人,UTF-8的設計人。他還在美國名嘴David Letterman 的晚間節目上露了一小臉,一臉憨厚地幫一胖子吹牛搞怪。讓偶佩服不已的是,羅伯伯還是1980年奧運會射箭的銀牌得主。他還是個頗為厲害的業餘天文學家,設計的珈瑪射線望遠鏡差點被NASA用在太空梭上。Rob Pike AT&T Bell Lab前Member of Technical Staff ,現在google研究作業系統。
基本介紹
- 中文名:羅布·派克
- 外文名:Rob Pike
- 性別:男
- 工作公司:谷歌
簡介,精彩引言,中文版本,
簡介
他還是兩本經典,The Unix Programming Environment 和 The Practice of Programming 的作者之一。如果初學者想在編程方面精益求精,實在該好好讀讀這兩本書。它們都有中文版的說。羅伯伯還寫出了Unix下第一個基於點陣圖的視窗系統,並且是著名的blit 終端的作者。當然了,羅伯伯還是號稱銳意革新的作業系統,Plan9,的主要作者。可惜的是,Plan9並沒有引起多少人的注意。
羅伯伯一怒之下,寫出了振聾發聵的雄文 Systems Software Research is Irrelevant,痛斥當下系統開發的不思進取,固步自封的弊病。雖然這篇文章是羅伯伯含忿出手,頗有偏激之詞,但確實道出了系統開發的無奈:開發周期越來越長,代價越來越大,用戶被統一到少數幾個系統上,結果越來越多的活動是測量和修補,而真正的革新越來越少。
就在羅伯伯鬱悶之極的時候,google登門求賢來了。如果說現在還有一家大眾公司在不遺餘力地把系統開發推向極致的話,也就是google了。隨便看看google的成果就知道了。具有超強容錯和負載平衡能力的分散式檔案系統GFS (現在能夠用100,000台廉價PC搭起一個巨型分布系統,並且高效便宜地進行管理的系統也不多哈),大規模機器學習系統(拼寫檢查,廣告匹配,拼音搜尋。。。哪個都很牛的說),更不用說處理海量並行計算的各式google服務了。Rob在System Software Research is Irrelevant里蕭瑟地說現在沒有人再關心繫統研究的前沿成果了。想不到他錯了,因為google關心。google網路了大批功成總是試圖吸取系統研究的最新成果。想必Rob Pike在google很幸福。願他做出更棒的系統。
目錄· 個人簡介 · 精彩引言 · 《程式設計實踐》中文版本 · 我是笨人——讀Rob Pike的《Notes on C Programming 》 · 參考文獻 [顯示部分][顯示全部]
Rob Pike 何許人也?作家?不錯,Rob 和貝爾實驗室的Kernighan 合作出版了《Unix 編程環境》(The Unix Programming Environment)和《程式設計實踐》(The Practice ofProgramming)。這兩本書都有中文譯本,為初學者研習和提高編程技術提供了很好的方法和理念。天文學家?這是 Rob 的副業。牛烘烘的他曾在70年代得到加拿大皇家天文協會多倫多中心的資助,對光污染進行研究,寫有相關論文若干篇。更厲害的是,他設計的伽馬望遠鏡差一點被用在太空梭上(如果他沒有開玩笑的話)。 Rob Pike
Robert C. Pike (born 1956) is a software engineer and author. He is best known for his work at Bell Labs, where he was a member of the Unix team and was involved in the creation of the Plan 9 from Bell Labs and Inferno operating systems, as well as the Limbo programming language.
He also co-developed the Blit graphical terminal for Unix; before that he wrote the first window system for Unix in 1981. Pike was the applicant for AT&T patent number 4555775 or " backing store patent" that is part of the X graphic system protocol. Pike is a prominent proponent of software patents. [1]
Over the years Pike has written many text editors; sam and acme are the most well known and are still in active use and development.
Pike, with Brian Kernighan, is the co-author of The Practice of Programming and The Unix Programming Environment. With Ken Thompson he is the co-creator of UTF-8. Pike also developed lesser systems such as the vismon program for displaying images of faces of email authors.
Pike also appeared once on The Late Show with David Letterman, as a technical assistant to the comedy duo Penn and Teller.
As a joke Pike claimed to have won the 1980 Olympic silver medal in Archery; however, Canada boycotted the 1980 Summer Olympics.
Pike, a Canadian citizen, is married to Renée French, and currently works for Google.
精彩引言
"Not only is UNIX dead, it's starting to smell really bad." - circa 1991 [1] Robert C. Pike
"Object-oriented design is the roman numerals of computing." - [2] "There's no such thing as a simple cache bug." [3]
"Caches aren't architecture, they're just optimization." [4]
"Sockets are the X windows of IO interfaces." [5]
"Sometimes when you fill a vacuum, it still sucks." - on the X Window System [6]
"Unix never says `please.'" [7]
"Those days are dead and gone and the eulogy was delivered by Perl."[8] - on one tool for one job
"I started keeping a list of these annoyances but it got too long and depressing so I just learned to live with them again. We really are using a 1970s era operating system well past its sell-by date. We get a lot done, and we have fun, but let's face it, the fundamental design of Unix is older than many of the readers of Slashdot, while lots of different, great ideas about computing and networks have been developed in the last 30 years. Using Unix is the computing equivalent of listening only to music by David Cassidy."[9]
中文版本
Brian W.Kernigham、Rob Pike 本書是Brian W. Kernighan和Rob Pike合著的最新力作。本書從排錯、測試、性能、可移植性、設計、界面、風格和記法等方面,討論了程式設計中實際的、又是非常深刻和具有廣泛意義的思想、技術和方法,它的翻譯出版將填補國內目前這方面書籍的空白。本書值得每個夢想並努力使自己成為優秀程式設計師的人參考,值得每個計算機專業的學生和計算機工作者閱讀,也可作為程式設計高級課程的教材或參考書。
Brian Kernighan 和 Rob Pike
Brian Kernighan 和 Rob Pike 兩位都是貝爾實驗室里搞計算機的元老了。Brian 年紀比較大,Rob 比較年輕。Brian 是 AWK 語言的作者之一,也是 C 語言最經典教材《C 程式設計語言》的作者之一,和 Rob 一起,他還寫過《程式設計實踐》。Rob 則是研究系統的,Plan 9 和許多其他項目都有他的功勞。他在 80 年代還很早地為我們引薦了滑鼠操作和可視化終端這樣的好東東。
《程式設計實踐》
目 錄
譯者序
前言
第1章 風格 1
1.1 名字 2
1.2 表達式和語句 4
1.3 一致性和習慣用法 8
1.4 函式宏 14
1.5 神秘的數 15
1.6 注釋 18
1.7 為何對此費心 22
第2章 算法與數據結構 23
2.1 檢索 23
2.2 排序 25
2.3 庫 27
2.4 一個Java快速排序 29
2.5 大O記法 31
2.6 可增長數組 33
2.7 表 35
2.8 樹 39
2.9 散列表 43
2.10 小結 46
第3章 設計與實現 48
3.1 馬爾可夫鏈算法 48
3.2 數據結構的選擇 50
3.3 在C中構造數據結構 51
3.4 生成輸出 54
3.5 Java 56
3.6 C++ 59
3.7 Awk和Perl 61
3.8 性能 63
3.9 經驗教訓 64
第4章 界面 67
4.1 逗號分隔的值 67
4.2 一個原型庫 69
4.3 為別人用的庫 72
4.4 C++實現 79
4.5 界面原則 82
4.6 資源管理 84
4.7 終止、重試或失敗 86
4.8 用戶界面 90
第5章 排錯 93
5.1 排錯系統 94
5.2 好線索,簡單錯誤 95
5.3 無線索,難辦的錯誤 98
5.4 最後的手段 101
5.5 不可重現的錯誤 103
5.6 排錯工具 105
5.7 其他人的程式錯誤 107
5.8 小結 108
第6章 測試 110
6.1 在編碼過程中測試 110
6.2 系統化測試 114
6.3 測試自動化 118
6.4 測試台 120
6.5 應力測試 123
6.6 測試秘訣 125
6.7 誰來測試 126
6.8 測試馬爾可夫程式 127
6.9 小結 129
第7章 性能 130
7.1 瓶頸 130
7.2 計時和輪廓 135
7.3 加速策略 138
7.4 代碼調整 140
7.5 空間效率 144
7.6 估計 145
7.7 小結 147
第8章 可移植性 149
8.1 語言 149
8.2 頭檔案和庫 154
8.3 程式組織 156
8.4 隔離 159
8.5 數據交換 160
8.6 位元組序 161
8.7 可移植性和升級 164
8.8 國際化 165
8.9 小結 167
第9章 記法 169
9.1 數據格式 169
9.2 正則表達式 174
9.3 可程式工具 180
9.4 解釋器、編譯器和虛擬機 182
9.5 寫程式的程式 186
9.6 用宏生成代碼 189
9.7 運行中編譯 190
後記 195
附錄:規則彙編 197
索引 200我是笨人——讀Rob Pike的《Notes on C Programming 》回目錄 Rob Pike, 是AT&T Bell Lab前Member of Technical Staff ,現在google研究作業系統,Unix先驅,UTF-8的設計人,The Unix Programming Environment 和 The Practice of Programming 的作者之一。 在《 Notes on C Programming 》中從另一個稍微不同的角度表述了 Unix 的哲學(或者說是程式局部最佳化6原則):
Rob Pike
1. 你無法斷定程式會在什麼地方耗費運行時間。瓶頸經常出現在想不到的地方,所以別急於胡亂找個地方改代碼,除非你已經證實那兒就是瓶頸所在。
2. 估量。在你沒對代碼進行估量,特別是沒找到最耗時的那部分之前,別去最佳化速度。
3. 花哨的算法在 n 很小時通常很慢,而 n 通常很小。花哨算法的常數複雜度很大。除非你確定 n 總是很大,否則不要用花哨算法(即使 n 很大,也優先考慮原則 2 )。比如,解決常見問題時,最簡單的樹——二叉樹(binary tree),總是比那些複雜的樹(AVL樹,伸展樹(splay tree)和紅黑樹、B-樹(B-tree),多叉樹(trie))來的高效。
4. 花哨的算法比簡單算法更容易出 bug 、更難實現。儘量使用簡單的算法配合簡單的數據結構。
只要掌握了數據結構中的四大法寶,就可以包打天下,他們是:array 、linked list 、hash table、binary tree 。這四大法寶可不是各自為戰的,靈活結合才能遊刃有餘。比如,一個用hash table組織的symbol table,其中是一個個由字元型array構成的linked list。
5. 以數據為中心。如果已經選擇了正確的數據結構並且把一切都組織得井井有條,正確的算法也就不言自明。編程的核心是數據結構,而不是算法。
6. 沒有原則 6 。
Ken Thompson —— Unix 最初版本的設計者和實現者,禪宗偈語般地對 Pike 的原則4 作了強調:
拿不準就窮舉