注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁出版圖書科學(xué)技術(shù)計算機/網(wǎng)絡(luò)軟件與程序設(shè)計程序設(shè)計綜合UNIX編程藝術(shù)

UNIX編程藝術(shù)

UNIX編程藝術(shù)

定 價:¥59.00

作 者: (美)理曼德(Raymond, E.S.)著
出版社: 電子工業(yè)出版社
叢編項:
標(biāo) 簽: UNIX操作系統(tǒng) 程序設(shè)計

ISBN: 9787121021169 出版時間: 2006-03-01 包裝: 膠版紙
開本: 小16開 頁數(shù): 525 字?jǐn)?shù):  

內(nèi)容簡介

  本書的作者將Unix三十年中未見紙端的艱難勝利的軟件工程智慧熔入文字。使Unix家庭成為最最具創(chuàng)新軟件的哲學(xué)、設(shè)計模式、工具、文化和傳統(tǒng),Raymond將之第一次帶給我們,并向我們展示它們?nèi)绾斡绊懏?dāng)今的Linux和開源運動。通過大量來自頂尖項目的實例,你將學(xué)會如何運用這些智慧經(jīng)驗來建造更優(yōu)雅、更可移植、更加好用的更加長久的軟件?!”緯饕榻B了Unix系統(tǒng)領(lǐng)域中的設(shè)計和開發(fā)哲學(xué)、思想文化體系、原則與經(jīng)驗,由公認(rèn)的Unix編程大師、開源運動領(lǐng)袖人物之一Eric S.Raymond傾力多年寫作而成。包括Unix設(shè)計者在內(nèi)的多位領(lǐng)域?qū)<乙矠楸緯暙I了寶貴的內(nèi)容。本書內(nèi)容涉及社群文化、軟件開發(fā)設(shè)計與實現(xiàn),覆蓋面廣、內(nèi)容深邃,完全展現(xiàn)了作者極其深厚的經(jīng)驗積累和領(lǐng)域智慧。 作者不僅給出了很多在程序設(shè)計方面的寶貴經(jīng)驗,還講述了UNIX的歷史,預(yù)測未來的唯一方法就是研究歷史.而在目前的計算機領(lǐng)域,關(guān)于計算機歷史的書籍和資料真是少的可憐.而且閱讀此書時讓人感覺正在同你講話的是一位長者,而不僅僅是一位教師,所以這本書我一定要買。――網(wǎng)友正所謂“功夫在詩外”,并不能為了編程而編程(更多地為了求生,嘻嘻),而應(yīng)該為了藝術(shù)而編程,這樣才能從編程之外發(fā)現(xiàn)許多可以借鑒并讓編程成為藝術(shù)的靈感,例如,當(dāng)前來自于建筑學(xué)的設(shè)計模式就是一例。或許,當(dāng)我們真正為藝術(shù)而編程的時候,也就往往開始邁出了從普通工匠到藝術(shù)家大師的征途,這大概就是影響了一代又一代Knuth大師的本意之所在吧。――何源

作者簡介

  DRIC S.RAYMOND 從1982年開始就是UNIX開發(fā)者。作為開源社區(qū)文化的倡導(dǎo)和呼吁者,他在《大教堂與市集》中寫下了這場運動的宣言,同時他還是《新黑客詞典》的編輯。

圖書目錄


第一篇
1 哲學(xué)
1.1 文化?什么文化?
1.2 Unix 的生命力
1.3 反對學(xué)習(xí)Unix 文化的理由
1.4 Unix 之失
1.5 Unix 之得
1.5.1 開源軟件
1.5.2 跨平臺可移植性和開放標(biāo)準(zhǔn)
1.5.3 Internet 和萬維網(wǎng)
1.5.4 開源社區(qū)
1.5.5 從頭到腳的靈活性
1.5.6 Unix Hack 之趣
1.5.7 Unix 的經(jīng)驗別處也可適用
1.6 Unix 哲學(xué)基礎(chǔ)
1.6.1 模塊原則:使用簡潔的接口拼合簡單的部件
1.6.2 清晰原則: 清晰勝于機巧
1.6.3 組合原則:設(shè)計時考慮拼接組合
1.6.4 分離原則: 策略同機制分離,接口同引擎分離
1.6.5 簡潔原則:設(shè)計要簡潔,復(fù)雜度能低則低
目錄
UNIX 編程藝術(shù)
1.6.6 吝嗇原則: 除非確無它法,不要編寫龐大的程序
1.6.7 透明性原則:設(shè)計要可見,以便審查和調(diào)試
1.6.8 健壯原則: 健壯源于透明與簡潔
1.6.9 表示原則: 把知識疊入數(shù)據(jù)以求邏輯質(zhì)樸而健壯
1.6.10 通俗原則:接口設(shè)計避免標(biāo)新立異
1.6.11 緘默原則:如果一個程序沒什么好說的,就保持沉默
1.6.12 補救原則: 出現(xiàn)異常時,馬上退出并給出足量錯誤信息
1.6.13 經(jīng)濟原則: 寧花機器一分,不花程序員一秒
1.6.14 生成原則: 避免手工hack,盡量編寫程序去生成程序
1.6.15 優(yōu)化原則: 雕琢前先得有原型,跑之前先學(xué)會走
1.6.16 多樣原則:決不相信所謂“不二法門”的斷言
1.6.17 擴展原則: 設(shè)計著眼未來,未來總比預(yù)想快
1.7 Unix 哲學(xué)之一言以蔽之
1.8 應(yīng)用Unix 哲學(xué)
1.9 態(tài)度也要緊
2 歷史——雙流記
2.1 Unix 的起源及歷史,1969-1995
2.1.1 創(chuàng)世紀(jì):1969-1971
2.1.2 出埃及記:1971-1980
2.1.3 TCP/IP 和Unix 內(nèi)戰(zhàn):1980-1990
2.1.4 反擊帝國:1991-1995
2.2 黑客的起源和歷史:1961-1995
2.2.1 游戲在校園的林間:1961-1980
2.2.2 互聯(lián)網(wǎng)大融合與自由軟件運動:1981-1991
2.2.3 Linux 和實用主義者的應(yīng)對:1991-1998
2.3 開源運動:1998 年及之后
目錄
AOSD 中文版—— 基于用例的面向方面軟件開發(fā)
2.4 Unix 的歷史教訓(xùn)
3 對比: Unix 哲學(xué)同其他哲學(xué)的比較
3.1 操作系統(tǒng)的風(fēng)格元素
3.1.1 什么是Unix 操作系統(tǒng)的統(tǒng)一性理念?
3.1.2 多任務(wù)能力
3.1.3 協(xié)作進程
3.1.4 內(nèi)部邊界
3.1.5 文件屬性和記錄結(jié)構(gòu)
3.1.6 二進制文件格式
3.1.7 首選用戶界面風(fēng)格
3.1.8 目標(biāo)受眾
3.1.9 開發(fā)的門坎
3.2 操作系統(tǒng)的比較
3.2.1 VMS
3.2.2 MacOS
3.2.3 OS/2
3.2.4 Windows NT
3.2.5 BeOS
3.2.6 MVS
3.2.7 VM/CMS
3.2.8 Linux
3.3 種什么籽,得什么果
第二篇
4 模塊性:保持清晰,保持簡潔
4.1 封裝和最佳模塊大小
4.2 緊湊性和正交性
4.2.1 緊湊性
4.2.2 正交性
4.2.3 SPOT 原則
4.2.4 緊湊性和強單一中心
4.2.5 分離的價值
4.3 軟件是多層的
4.3.1 自頂向下和自底向上
4.3.2 膠合層
4.3.3 實例分析:被視為薄膠合層的C 語言
目錄
UNIX 編程藝術(shù)
4.4 程序庫
4.4.1 實例分析:GIMP 插件
4.5 Unix 和面向?qū)ο笳Z言
4.6 模塊式編碼
5 文本化:好協(xié)議產(chǎn)生好實踐
5.1 文本化的重要性
5.1.1 實例分析:Unix 口令文件格式
5.1.2 實例分析:.newsrc 格式
5.1.3 實例分析:PNG 圖形文件格式
5.2 數(shù)據(jù)文件元格式
5.2.1 DSV 風(fēng)格
5.2.2 RFC 822 格式
5.2.3 Cookie-Jar 格式
5.2.4 Record-Jar 格式
5.2.5 XML
5.2.6 Windows INI 格式
5.2.7 Unix 文本文件格式的約定
5.2.8 文件壓縮的利弊
5.3 應(yīng)用協(xié)議設(shè)計
5.3.1 實例分析:SMTP,一個簡單的套接字協(xié)議
5.3.2 實例分析:POP3,郵局協(xié)議
5.3.3 實例分析:IMAP,互聯(lián)網(wǎng)消息訪問協(xié)議
5.4 應(yīng)用協(xié)議元格
5.4.1 經(jīng)典的互聯(lián)網(wǎng)應(yīng)用元協(xié)議
5.4.2 作為通用應(yīng)用協(xié)議的HTTP
5.4.2.1 實例分析:CDDB/freedb.org 數(shù)據(jù)庫
5.4.2.2 實例分析:互聯(lián)網(wǎng)打印協(xié)議
5.4.3 BEEP:塊可擴展交換協(xié)議
5.4.4 XML-RPC,SOAP 和Jabber
6 透明性:來點兒光
6.1 研究實例
6.1.1 實例分析:audacity
6.1.2 實例分析:fetchmail 的–v 選項
6.1.3 實例分析:GCC
6.1.4 實例分析:kmail
6.1.5 實例分析:SNG
6.1.6 實例分析:Terminfo 數(shù)據(jù)庫
6.1.7 實例分析:Freeciv 數(shù)據(jù)文件
目錄
AOSD 中文版—— 基于用例的面向方面軟件開發(fā)
6.2 為透明性和可顯性而設(shè)計
6.2.1 透明性中的之禪
6.2.2 為透明性和可顯性而編碼
6.2.3 透明性和避免過度保護
6.2.4 透明性和可編輯的表現(xiàn)形式表達
6.2.5 透明性、故障診斷和故障恢復(fù)
6.3 為可維護性而設(shè)計
7 多道程序設(shè)計: 分離進程為獨立的功能
7.1 從性能調(diào)整中分離復(fù)雜度控制
7.2 Unix IPC 方法的分類
7.2.1 把任務(wù)轉(zhuǎn)給專門程序
7.2.2 管道、重定向和過濾器
7.2.3 包裝器
7.2.4 安全性包裝器和Bernstein 鏈
7.2.5 從進程
7.2.6 對等進程間通信
7.3 要避免的問題和方法
7.3.1 廢棄的Unix IPC 方法
7.3.2 遠程過程調(diào)用
7.3.3 線程——恐嚇或威脅?
7.4 在設(shè)計層次上的進程劃分
8 微型語言:尋找歌唱的樂符
8.1 理解語言分類法
8.2 應(yīng)用微型語言
8.2.1 案例分析:sng
8.2.2 案例分析:正則表達式
8.2.3 案例分析:Glade
8.2.4 案例分析:m4
8.2.5 案例分析:XSLT
8.2.6 案例分析:The Documenter's Workbench Tools
8.2.7 案例分析:fetchmail 的運行控制語法
8.2.8 案例分析:awk
8.2.9 案例分析:PostScript
8.2.10 案例分析:bc 和dc
8.2.11 案例分析:Emacs Lisp
8.2.12 案例分析:JavaScript
8.3 設(shè)計微型語言
目錄
UNIX 編程藝術(shù)
8.3.1 選擇正確的復(fù)雜度
8.3.2 擴展和嵌入語言
8.3.3 編寫自定義語法
8.3.4 宏—慎用!
8.3.5 語言還是應(yīng)用協(xié)議?
9 生成:提升規(guī)格說明的層次
9.1 數(shù)據(jù)驅(qū)動編程
9.1.1 實例分析:ascii
9.1.2 實例分析:統(tǒng)計學(xué)的垃圾郵件統(tǒng)計
9.1.3 實例分析:fetchmailconf 中的元類改動
9.2 專用代碼的生成
9.2.1 實例分析:生成ascii 顯示的代碼
9.2.2 實例分析:為列表生成HTML 代碼
10 配置:邁出正確的第一步
10.1 什么應(yīng)是可配置的?
10.2 配置在哪里
10.3 運行控制文件
10.3.1 實例分析:.netrc 文件
10.3.2 到其它操作系統(tǒng)的可移植性
10.4 環(huán)境變量
10.4.1 系統(tǒng)環(huán)境變量
10.4.2 用戶環(huán)境變量
10.4.3 何時使用環(huán)境變量
10.4.4 到其它操作系統(tǒng)的可移植性
10.5 命令行選項
10.5.1 從–a 到–z 的命令行選項
10.5.2 到其它操作系統(tǒng)的可移植性
10.6 如何挑選方法
10.6.1 實例分析:fetchmail
10.6.2 實例分析:XFree86 服務(wù)器
10.7 論打破規(guī)則
11 接口:Unix 環(huán)境下的用戶接口設(shè)計模式
11.1 最小立異原則的應(yīng)用
11.2 Unix 接口設(shè)計的歷史
目錄
AOSD 中文版—— 基于用例的面向方面軟件開發(fā)
11.3 接口設(shè)計評估
11.4 CLI 和可視接口之間的權(quán)衡
11.4.1 實例分析:編寫計算器程序的兩種方式
11.5 透明度、表現(xiàn)力和可配置性
11.6 Unix 接口設(shè)計模式
11.6.1 過濾器模式
11.6.2 Cantrip 模式
11.6.3 源模式
11.6.4 接收器模式
11.6.5 編譯器模式
1.6.6 ed 模式
11.6.7 Roguelike 模式
11.6.8 “引擎和接口分離”模式
11.6.9 CLI 服務(wù)器模式
11.7 應(yīng)用Unix 接口設(shè)計模式
11.8 網(wǎng)頁瀏覽器作為通用前端
11.9 沉默是金
12 優(yōu)化
12.1 什么也別做,就站在那兒!
12.2 先估量,后優(yōu)化
12.3 非定域性之害
12.4 吞吐量和延遲
12.4.1 批操作
12.4.2 重疊操作
12.4.3 緩存操作結(jié)果
13.1 談?wù)剰?fù)雜度
13.1.1 復(fù)雜度的三個來源
13.1.2 接口復(fù)雜度和實現(xiàn)復(fù)雜度的折衷
13.1.3 必然的、可能的和偶然的復(fù)雜度
13.1.4 映射復(fù)雜度
目錄
UNIX 編程藝術(shù)
13.1.5 當(dāng)簡潔性不能勝任
13.2 五個編輯器的故事
13.2.1 ed
13.2.2 vi.
13.2.3 Sam
13.2.4 Emacs
13.2.5 Wily
13.3 編輯器的適當(dāng)規(guī)模
13.3.1 甄別復(fù)雜度問題
13.3.2 折衷無用
13.3.3 Emacs 是個反Unix 傳統(tǒng)的論據(jù)嗎?
13.4 軟件的適度規(guī)模
第一篇
14 語言:C 還是非C?
14.1 Unix 下語言的豐饒
14.2 為什么不是C?
14.3 解釋型語言和混合策略
14.4 語言評估
14.4.1 C
14.4.2 C++
14.4.3 Shell
14.4.4 Perl
14.4.5 Tcl.
14.4.6 Python
14.4.7 Java
14.4.8 Emacs Lisp
14.5 未來趨勢
14.6 選擇X 工具包
15 工具:開發(fā)的戰(zhàn)術(shù)
15.1 開發(fā)者友好的操作系統(tǒng)
15.2 編輯器選擇
15.2.1 了解vi
目錄
AOSD 中文版—— 基于用例的面向方面軟件開發(fā)
15.2.2 了解Emacs
15.2.3 非虔誠的選擇:兩者兼用
15.3 專用代碼生成器
15.3.1 yacc 和lex
15.3.1 實例分析:fetchmailrc 的語法
15.3.2 實例分析:Glade
15.4 make:自動化編譯
15.4.1 make 的基本理論
15.4.2 非C/C++開發(fā)中的make
15.4.3 通用生成目標(biāo)
15.4.4 生成Makefile
15.5 版本控制系統(tǒng)
15.5.1 為什么需要版本控制?
15.5.2 手工版本控制
15.5.3 自動化的版本控制
15.5.4 Unix 的版本控制工具
15.6 運行期調(diào)試
15.7 性能分析
15.8 使用Emacs 整合工具
15.8.1 Emacs 和make
15.8.2 Emacs 和運行期調(diào)試
15.8.3 Emacs 和版本控制
15.8.4 Emacs 和Profiling
15.8.5 像IDE 一樣,但更強
16 重用:論不要重新發(fā)明輪子
——《道德經(jīng)》
16.1 豬小兵的故事
16.2 透明性是重用的關(guān)鍵
16.3 從重用到開源
16.4 生命中最美好的就是“開放”
16.5 何處找?
16.6 使用開源軟件的問題
16.7 許可證問題
16.7.1 開放源碼的資格
16.7.2 標(biāo)準(zhǔn)開放源碼許可證
16.7.3 何時需要律師
目錄
UNIX 編程藝術(shù)
第一篇
17 可移植性:軟件可移植性與遵循標(biāo)準(zhǔn)
17.1 C 語言的演化
17.1.1 早期的C 語言
17.2.1 C 語言標(biāo)準(zhǔn)
17.2 Unix 標(biāo)準(zhǔn)
17.2.1 標(biāo)準(zhǔn)和Unix 之戰(zhàn)
17.2.2 慶功宴上的幽靈
17.2.3 開源世界的Unix 標(biāo)準(zhǔn)
17.3 IETF 和RFC 標(biāo)準(zhǔn)化過程
17.4 規(guī)格DNA,代碼RNA
17.5 可移植性編程
17.5.1 可移植性和編程語言選擇
17.5.2 避免系統(tǒng)依賴性
17.5.3 移植工具
17.6 國際化
17.7 可移植性、開放標(biāo)準(zhǔn)以及開放源碼
18 文檔:向網(wǎng)絡(luò)的世界闡釋代碼
18.1 文檔概念
18.2 Unix 風(fēng)格
18.2.1 大文檔偏愛
18.2.2 文化風(fēng)格
18.3 各種Unix 文檔格式
18.3.1 troff 和Documenter's Workbench Tools
18.3.2 TEX
18.3.3 Texinfo
18.3.4 POD
18.3.5 HTML
18.3.6 DocBook
18.4 當(dāng)前的混亂和可能的出路
18.5 DocBook
18.5.1 文檔類型定義
18.5.2 其它DTD
目錄
AOSD 中文版—— 基于用例的面向方面軟件開發(fā)
18.5.3 DocBook 工具鏈
18.5.4 移植工具
GNU Texinfo
POD
LATEX
18.5.5 編輯工具
18.5.6 相關(guān)標(biāo)準(zhǔn)和實踐
18.5.7 SGML
18.5.8 XML-DocBook 參考書籍
18.6 編寫Unix 文檔的最佳實踐
19 開放源碼:在Unix 新社區(qū)中編程
19.1 Unix 和開放源碼
19.2 與開源開發(fā)者協(xié)同工作的最佳實踐
19.2.1 良好的修補實踐
19.2.2 良好的項目、檔案文件命名實踐
19.2.3 良好的開發(fā)實踐
19.2.4 良好的發(fā)行制作實踐
19.2.5 良好的交流實踐
19.3 許可證的邏輯:如何挑選
19.4 為什么應(yīng)使用某個標(biāo)準(zhǔn)許可證
19.5 各種開源許可證
19.5.1 MIT 或者X Consortium 許可證
19.5.2 經(jīng)典BSD 許可證
19.5.3 Artistic 許可證
19.5.4 通用公共許可證
19.5.5 Mozilla 公共許可證
20 未來:危機與機遇
20.1 Unix 傳統(tǒng)中的必然和偶然
20.2 Plan 9:未來之路
20.3 Unix 設(shè)計中的問題
20.3.1 Unix 文件就是一大袋字節(jié)
20.3.2 Unix 對GUI 的支持孱弱
20.3.3 文件刪除不可撤銷
20.3.4 Unix 假定文件系統(tǒng)是靜態(tài)的
20.3.5 作業(yè)控制設(shè)計拙劣
20.3.6 Unix API 沒有使用異常
20.3.7 ioctl(2)和fcntl(2)是個尷尬
20.3.8 Unix 安全模型可能太過原始
20.3.9 Unix 名字種類太多
目錄
UNIX 編程藝術(shù)
20.3.10 文件系統(tǒng)可能有害論
20.3.11 朝向全局互聯(lián)網(wǎng)地址空間
20.4 Unix 的環(huán)境問題
20.5 Unix 文化中的問題
20.6 信任的理由
附錄A 縮寫詞表
附錄C 貢獻者
附錄D 無根的根:無名師的Unix 心傳
索引

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號