編輯推薦
偉大的計算機科學著作之一
程序設計人員的案頭需要的著作
計算機先驅Brian W. Kernighan和Rob Pike的經典作品
經典名著《UNIX編程環境》的作者Brian Kernighan和Rob Pike再次運用瞭他們的真知灼見,撰寫瞭這本書,來幫助每一個程序員提高效率和生産力。
這本書中所包含的內容比僅僅寫代碼要豐富得多。程序員需要評估權衡、遴選設計、調試測試、優化性能,還要對自己或他人撰寫的軟件進行維護。在做這些事情的同時,程序員還要關注諸如兼容性、健壯性和可靠性這樣的問題,並且需要符閤各種規範。
本書涵蓋瞭所有這些主題,並且不止於此。書中滿是實用的建議和使用C、C++、Java還有一係列特殊用途的語言寫就的真實示例。
Kernighan和Pike集多年寫程序、教學和與其他程序員共同工作的經驗寫成本書。隻要你也在寫軟件,就能從這本書中獲得原則和方嚮上的教益。
內容簡介
本書是計算機科學方麵的經典名著,由計算機界極具影響力的兩位專傢Brian W. Kernighan和Rob Pike閤著。書的內容圍繞程序設計實踐中的一係列問題展開,講述對於程序員有共性的知識,以幫助各程序員寫齣更高效的程序。本書從排錯、測試、性能、可移植性、設計、界麵、風格和記法等方麵,討論瞭程序設計中既具有實際意義又具有廣泛意義的思想、技術和方法。
本書值得每位夢想並努力成為程序員的人參考,值得每位計算機專業的學生和計算機工作者閱讀,也適閤作為程序設計高級課程的教材或參考書。
作者簡介
Brain Kernighan計算機科學傢,曾與UNIX的締造者Ken Thompson和Dennis Ritchie一起在貝爾實驗室工作。他也是AWK和AMPL程序設計語言的共同作者。“K&R; C”和“AWK”中的“K”都是指“Kernighan”。2000年起,他在普林斯頓大學計算機科學係任教授,並任本科部代錶。
Rob Pike 軟件工程師。他在貝爾實驗室任職期間,作為UNIX小組成員參與開發瞭Plan 9和Inferno操作係統以及Limbo程序設計語言。目前他在Google公司工作,參與瞭Go和Sawzall程序設計語言的開發。
目錄
Chapter 1: Style / 風格 1
1.1 Names / 名字 3
1.2 Expressions and Statements / 錶達式和語句6
1.3 Consistency and Idioms / 一緻性和習慣用語10
1.4 Function Macros / 函數宏17
1.5 Magic Numbers / 幻數19
1.6 Comments / 注釋23
1.7 Why Bother? / 為何要在風格方麵費心 27
Chapter 2: Algorithms and Data Structures / 算法與數據結構29
2.1 Searching / 檢索30
2.2 Sorting / 排序32
2.3 Libraries / 庫34
2.4 A Java Quicksort / 一個Java快速排序實現37
2.5 O-Notation / 大O記法40
2.6 Growing Arrays / 自增長數組41
2.7 Lists / 錶44
2.8 Trees / 樹50
2.9 Hash Tables / 散列錶55
2.10 Summary / 小結 58
Chapter 3: Design and Implementation / 設計與實現61
3.1 The Markov Chain Algorithm / 馬爾可夫鏈算法62
3.2 Data Structure Alternatives / 在多種數據結構之間選擇64
3.3 Building the Data Structure in C / 使用C語言構建數據結構65
3.4 Generating Output / 生成輸齣69
3.5 Java 71
3.6 C++ 76
3.7 Awk and Perl / Awk和Perl 78
3.8 Performance / 性能80
3.9 Lessons / 經驗教訓82
Chapter 4: Interfaces / 接口85
4.1 Comma-Separated Values / 逗號分隔值86
4.2 A Prototype Library / 一個原型庫87
4.3 A Library for Others / 一個給他人用的庫91
4.4 A C++ Implementation / 一個C++實現99
4.5 Interface Principles / 接口原則103
4.6 Resource Management / 資源管理106
4.7 Abort, Retry, Fail?109
4.8 User Interfaces / 用戶界麵113
Chapter 5: Debugging / 調試117
5.1 Debuggers / 調試器 118
5.2 Good Clues, Easy Bugs / 綫索明顯、易於發現的錯誤119
5.3 No Clues, Hard Bugs / 綫索不明、難以發現的錯誤123
5.4 Last Resorts / 最後的手段127
5.5 Non-reproducible Bugs / 不可重現的錯誤 130
5.6 Debugging Tools / 調試工具131
5.7 Other People's Bugs / 他人引入的錯誤 135
5.8 Summary / 小結136
Chapter 6: Testing / 測試139
6.1 Test as You Write the Code / 一邊編碼,一邊測試140
6.2 Systematic Testing / 係統化測試145
6.3 Test Automation / 測試自動化149
6.4 Test Scaffolds / 測試腳手架151
6.5 Stress Tests / 壓力測試155
6.6 Tips for Testing / 測試心得158
6.7 Who Does the Testing? / 誰來測試 159
6.8 Testing the Markov Program / 馬爾可夫程序的測試160
6.9 Summary / 小結162
Chapter 7: Performance / 性能165
7.1 A Bottleneck / 瓶頸166
7.2 Timing and Profiling / 計時和剖析171
7.3 Strategies for Speed / 加速策略175
7.4 Tuning the Code / 代碼調優178
7.5 Space Efficiency / 空間利用率182
7.6 Estimation / 評估184
7.7 Summary / 小結187
Chapter 8: Portability / 可移植性189
8.1 Language / 語言190
8.2 Headers and Libraries / 頭文件和庫196
8.3 Program Organization / 程序架構198
8.4 Isolation / 隔離202
8.5 Data Exchange / 數據交換203
8.6 Byte Order / 字節序204
8.7 Portability and Upgrade / 可移植性和升級207
8.8 Internationalization / 國際化209
8.9 Summary / 小結212
Chapter 9: Notation / 記法215
9.1 Formatting Data / 數據格式化216
9.2 Regular Expressions / 正則錶達式222
9.3 Programmable Tools / 可編程工具228
9.4 Interpreters, Compilers, and Virtual Machines / 解釋器、編譯器和虛擬機 231
9.5 Programs that Write Programs / 寫程序的程序237
9.6 Using Macros to Generate Code / 用宏生成代碼240
9.7 Compiling on the Fly / 運行中編譯241
Epilogue / 後記247
Appendix: Collected Rules / 規則匯編249
前言/序言
程序設計實踐 英文版 下載 mobi epub pdf txt 電子書