没有合适的资源?快使用搜索试试~ 我知道了~
The Art of Unix Programming
5星 · 超过95%的资源 需积分: 10 16 下载量 165 浏览量
2009-09-14
22:53:07
上传
评论
收藏 3.75MB PDF 举报
温馨提示
试读
511页
The Art of Unix Programming, Unix 编程艺术
资源推荐
资源详情
资源评论
The Art of Unix Programming
Next
The Art of Unix Programming
Eric Steven Raymond
Thyrsus Enterprises
<esr@thyrsus.com>
Copyright © 2003 Eric S. Raymond
Revision History
Revision 0.0 1999 esr
Public HTML draft, first four chapters only.
Revision 0.1 16 November 2002 esr
First DocBook draft, fifteen chapters. Released to Mark Taub at AW.
Revision 0.2 2 January 2003 esr
First manuscript walkthrough at Chapter 7. Released to Dmitry Kirsanov at AW
production.
Revision 0.3 22 January 2003 esr
First eighteen-chapter draft. Manuscript walkthrough at Chapter 12. Limited release for
early reviewers.
Revision 0.4 5 February 2003 esr
Release for public review.
Revision 0.41 11 February 2003 esr
Corrections and additions to Mac OS case study. A bit more about binary files as caches.
Added cite of Butler Lampson. Additions to history chapter. Note in futures chapter about
C and exceptions. Many typo fixes.
Revision 0.42 12 February 2003 esr
Add fcntl/ioctl to things Unix got wrong.
Dedication
To Ken Thompson and Dennis Ritchie, because you inspired me.
Table of Contents
Requests for reviewers and copy-editors
Preface
Who Should Read This Book
How To Use This Book
Related References
Conventions Used In This Book
Our Case Studies
Author's Acknowledgements
I. Context
1. Philosophy
Culture? What culture?
The durability of Unix
The case against learning Unix culture
What Unix gets wrong
What Unix gets right
Open-source software
Cross-platform portability and open standards
The Internet
The open-source community
Flexibility in depth
Unix is fun to hack
The lessons of Unix can be applied elsewhere
Basics of the Unix philosophy
Rule of Modularity: Write simple parts connected by clean interfaces.
Rule of Composition: Design programs to be connected with other
programs.
Rule of Clarity: Clarity is better than cleverness.
Rule of Simplicity: Design for simplicity; add complexity only where
you must.
Rule of Transparency: Design for visibility to make inspection and
debugging easier.
Rule of Robustness: Robustness is the child of transparency and
simplicity.
Rule of Least Surprise: In interface design, always do the least
surprising thing.
Rule of Repair: Repair what you can — but when you must fail, fail
noisily and as soon as possible.
Rule of Economy: Programmer time is expensive; conserve it in
preference to machine time.
Rule of Generation: Avoid hand-hacking; write programs to write
programs when you can.
Rule of Representation: Use smart data so program logic can be stupid
and robust.
Rule of Separation: Separate policy from mechanism; separate
interfaces from engines.
Rule of Optimization: Prototype before polishing. Get it working before
you optimize it.
Rule of Diversity: Distrust all claims for one true way.
Rule of Extensibility: Design for the future, because it will be here
sooner than you think.
The Unix philosophy in one lesson
Applying the Unix philosophy
Attitude matters too
2. History
Origins and history of Unix, 1969-1995
Genesis: 1969-1971
Exodus: 1971-1980
TCP/IP and the Unix Wars: 1980-1990
Blows against the empire: 1991-1995
Origins and history of the hackers, 1961-1995
At play in the groves of academe: 1961-1980
Internet fusion and the Free Software Movement: 1981-1991
Linux and the pragmatist reaction: 1991-1998
The open-source movement: 1998 and onward.
The lessons of Unix history
3. Contrasts
The elements of operating-system style
What is the unifying idea?
Cooperating processes
Internal boundaries
File attributes and record structures
Binary file formats
Preferred UI style
Who is the intended audience?
What are the entry barriers to development?
Operating-system comparisons
VMS
Mac OS
OS/2
Windows NT
BeOS
Linux
What goes around, comes around
II. Design
4. Modularity
Encapsulation and optimal module size
Compactness and orthogonality
Compactness
Orthogonality
The DRY rule
The value of detachment
Top-down, bottom-up, and glue layers
Case study: C considered as thin glue
Library layering
Case study: GIMP plugins
Unix and object-oriented languages
Coding for modularity
5. Textuality
The Importance of Being Textual
Case study: Unix password file format
Case study: .newsrc format
Case study: The PNG graphics file format
Data file metaformats
/etc/passwd style
RFC-822 format
Fortune-cookie format
XML
Windows INI format
Unix textual file format conventions
Application protocol design
Case study: SMTP, a simple socket protocol
Case study: POP3, the Post Office Protocol
Case study: IMAP, the Internet Message Access Protocol
Application protocol metaformats
The classical Internet application metaprotocol
HTTP as a universal application protocol
BEEP
XML-RPC. SOAP, and Jabber
Binary files as caches
6. Multiprogramming
Separating complexity control from performance tuning
Handing off tasks to specialist programs
Case study: the mutt mail user agent.
Pipes, redirection, and filters
Case study: Piping to a Pager
Case study: making word lists
Case study: pic2graph
Case study: bc(1) and dc(1)
Slave processes
Case study: scp(1) and ssh
Wrappers
剩余510页未读,继续阅读
资源评论
- wangxuezheng2012-01-23Unix系统下(包括Linux)整个程序开发的文化的很好的解读,如果同时阅读作者的 大教堂和市集 这本书的话,感受会更深。原来阅读了中文版本,本次阅读英文版本。
eidff
- 粉丝: 0
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功