UNIX编程艺术(英文版)

UNIX编程艺术(英文版)
作 者: 雷蒙德
出版社: 人民邮电出版社
丛编项: 典藏原版书苑
版权说明: 本书为公共版权或经版权方授权,请支持正版图书
标 签: UNIX
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

  本书提供作译者介绍Eric S.Raymobd从1982年开始从事UNIX开发。作为开源社文化的倡导者和呼吁者。他在《大教堂与市集》中发表了这场运动的宣言,同时他还编辑了《新黑客词典》一书。...

内容简介

本书主要介绍了Unix系统领域中的设计和开发哲学、思想文化体系、原则与经验,总结了Unix发展史上成功的经验和失败的教训、经过时间验证的编码策略以及普遍适用的实用工具。本书由著名的Unix编程大师、开源运动领袖人物之一Eric S. Raymond倾力多年编写而成,汇集了Unix之父Ken Thompson等13位Unix先锋的经典评论。本书内容涉及领域文化、软件开发设计与实现,覆盖面广、内容深邃,完全展现了作者极其深厚的经验积累和领域智慧,是Unix领域中一本不朽的经典名著。.本书的编写历时5年,作者将其30年中未见纸端的UNIX软件工程智慧结晶奉献给读者。作者第一次将软件哲学、设计模式。工具.文化和传统精华展示给读者,这些精华使UNIX成为具有创新意义的软件,并展示了它们如何影响着当今的Linux和开源运动。本书中包含的大量实例都来源子重要的开源项目,通过这些实例,可以教会UNIX和Linux程序员如何使软件更优雅、更可移植,更加长效以及更具可重用性。...

图书目录

Contents

I Context

1 Philosophy:Philosophy Matters

1.1 Culture?What Culture?

1.2 The Durability of Unix

1.3 The Case against Learning Unix Culture

1.4 What Unix Gets Wrong

1.5 What Unix Gets Right

1.6 Basics of the Unix Philosophy

1.7 The Unix Philosophy in One Lesson

1.8 Applying the Unix Philosophy

1.9 Attitude Matters Too

2 History: A Tale of Two Cultures

2.1 Origins and History of Unix,1969-1995

2.2 Origins and Histry of the Hackers,1961-1980

2.3 The Open-Source Movement:1998 and Onward

2.4 The Lessons of Unix History

3 Contrasts: Comparing the Unix Philosophy with Others

3.1 The Elements of Operating-System Style

3.2 Operating-System Comparisons

3.3 What Goes Around,Comes Around

II Design

4 Modularity:Keeping It Clean,Keeping It Simple

4.1 Encapsulation and Optimal Module Size

4.2 Compactness and Orthogonality

4.3 Software Is a Many-Layered Thing

4.4 Libraries

4.5 Unix and Object-Oriented Languages

4.6 Coding for Modularity

5 Textuality:Good Protocols Make Good Practice

5.1 The lmportance of Being Textual

5.2 Data File Metaformats

5.3 Application Protocol Design

5.4 Application Protocol Metaformats

6 Transparency: Let There Be Light

6.1 Studying Cases

6.2 Designing for Transparency and Discoverability

6.3 Designing for Maintainability

7 Multiprogramming:Separating Processes to Separate Function

7.1 Separating Complexity Control from Performance Tuning

7.2 Taxonomy of Unix IPC Methods

7.3 Problems and Methods to Avoid

7.4 Process Partitioning at the Design Level

8 Minilanguages: Finding a Notation That Sings

8.1 Understanding the Taxonomy of Languages

8.2 Applying Minilanguages

8.3 Designing Minilanguages

9 Generation: Pushing the Specification Level Upwards

9.1 Data-Driven Programming

9.2 Ad-hoc Code Generation

10 Configuration: Starting on the Right Foot

10.1 What Should Be Configurable?

10.2 Where Configurations Live

10.3 Run-Control Files

10.4 Environment Variables

10.5 Command-Line Options

10.6 How to Choose among the Methods

10.7 On Breaking These Rules

11 Interfaces:User-Interface Design Patterns in the Unix Environment

11.1 Applying the Rule of Least Surprise

11.2 History of Interface Design on Unix

11.3 Evaluating Interface Designs

11.4 Tradeoffs between CLI and Visual Interfaces

11.5 Transparency,Expressiveness,and Configurability

11.6 Unix Interface Design Patterns

11.7 Applying Unix Interface-Design Patterns

11.8 The Web Browser as a Universal Front End

11.9 Silence Is Golden

12 Optimization:

12.1 Don’t Just Do Something,Stand There!

12.2 Measure before Optimizing

12.3 Nonlocality Considered Harmful

12.4 Throughput vs.Latency

13 Complexity: As Simple As Possible,but No Simpler

13.1 Speaking of Complexity

13.2 A Tale of Five Editors

13.3 The Right Size for an Editor

13.4 The Right Size of Software

III Implementation

14 Languages: To C or Not To C?

14.1 Unix’s Cornucopia of Languages

14.2 Why Not C?

14.3 Interpreted Languages and Mixed Strategies

14.4 Language Evaluations

14.5 Trends for the Future

14.6 Choosing an X Toolkit

15 Tools:The Tactics of Development

15.1 A Developer-Friendly Operating System

15.2 Choosing an Editor

15.3 Special-Purpose Code Generators

15.4 Makd: Automating Your Recipes

15.5 Version-Control Systems

15.6 Runtime Debugging

15.7 Profiling

15.8 Combining Tools with Emacs

16 Reuse: On Not Reinventing the Wheel

16.1 The Tale of J.Random Newbil

16.2 Transparency as the Key to Reuse

16.3 From Reuse to Open Source

16.4 The Best Things in Life Are Open

16.5 Where to Look?

16.6 Lssues in Using Open-Surce Software

16.7 Licensing lssues

IV Community

17 Portability: Software Portability and Keeping Up Standards

17.1 Evolution of C

17.2 Unix Standards

17.3 IETF and the RFC Standards Process

17.4 Specifications as DNA,Code as RNA

17.5 Prognramming for Portability

17.6 Internationalization

17.7 Portability,Open Standards,and Open Source

18 Documentation:Explaining Your Code to a Web-Centric World

18.1 Documentation Concepts

18.2 The Unix Style

18.3 The Zoo of Unix Documentation Formats

18.4 The Present Chaos and a Possible Way Out

18.5 DocBook

18.6 Best Practices for Writing Unix Documentation

19 Open Source:Programming in the New Unix Community

19.1 Unix and Open Source

19.2 Best Practices for Working with Open-Source Developers

19.3 The Logic of Licenses:How to Pick One

19.4 Why You Should Use a Standard License

19.5 Varieties of Open-Source Licensing

20 Futures:Dangers and Opportunities

20.1 Essence and A ccident in Unix Tradition

20.2 Plan 9: The Way the Future Was

20.3 Problems in the Design of Unix

20.4 Problems in the Environment of Unix

20.5 Problems in the Culture of Unix

20.6 Reasons to Believe

A Glossary of Abbreviations

B References

C Contributors

D Rootless Root:: The Unix Koans of Master Foo

Colophon

Index