Skip to content

Art of UNIX Programming

Best in textbook rentals since 2012!

ISBN-10: 0131429019

ISBN-13: 9780131429017

Edition: 2004

Authors: Eric Raymond

List price: $54.99
Shipping box This item qualifies for FREE shipping.
Blue ribbon 30 day, 100% satisfaction guarantee!
what's this?
Rush Rewards U
Members Receive:
Carrot Coin icon
XP icon
You have reached 400 XP and carrot coins. That is the daily max!

Description:

The Art of UNIX Programming poses the belief that understanding the unwritten UNIX engineering tradition and mastering its design patterns will help programmers of all stripes to become better programmers. This book attempts to capture the engineering wisdom and design philosophy of the UNIX, Linux, and Open Source software development community as it has evolved over the past three decades, and as it is applied today by the most experienced programmers. Eric Raymond offers the next generation of "hackers" the unique opportunity to learn the connection between UNIX philosophy and practice through careful case studies of the very best UNIX/Linux programs.
Customers also bought

Book details

List price: $54.99
Copyright year: 2004
Publisher: Addison Wesley Professional
Publication date: 9/23/2003
Binding: Paperback
Pages: 560
Size: 6.90" wide x 9.20" long x 1.30" tall
Weight: 2.2
Language: English

Preface
Context
Philosophy: Philosophy Matters
Culture? What Culture?
The Durability of Unix
The Case against Learning Unix Culture
What Unix Gets Wrong
What Unix Gets Right
Basics of the Unix Philosophy
The Unix Philosophy in One Lesson
Applying the Unix Philosophy
Attitude Matters Too
History: A Tale of Two Cultures
Origins and History of Unix, 1969-1995
Origins and History of the Hackers, 1961-1995
The Open-Source Movement: 1998 and Onward
The Lessons of Unix History
Contrasts: Comparing the Unix Philosophy with Others
The Elements of Operating-System Style
Operating-System Comparisons
What Goes Around, Comes Around
Design
Modularity: Keeping It Clean, Keeping It Simple
Encapsulation and Optimal Module Size
Compactness and Orthogonality
Software Is a Many-Layered Thing
Libraries
Unix and Object-Oriented Languages
Coding for Modularity
Textuality: Good Protocols Make Good Practice
The Importance of Being Textual
Data File Metaformats
Application Protocol Design
Application Protocol Metaformats
Transparency: Let There Be Light
Studying Cases
Designing for Transparency and Discoverability
Designing for Maintainability
Multiprogramming: Separating Processes to Separate Function
Separating Complexity Control from Performance Tuning
Taxonomy of Unix IPC Methods
Problems and Methods to Avoid
Process Partitioning at the Design Level
Minilanguages: Finding a Notation That Sings
Understanding the Taxonomy of Languages
Applying Minilanguages
Designing Minilanguages
Generation: Pushing the Specification Level Upwards
Data-Driven Programming
Ad-hoc Code Generation
Configuration: Starting on the Right Foot
What Should Be Configurable?
Where Configurations Live
Run-Control Files
Environment Variables
Command-Line Options
How to Choose among the Methods
On Breaking These Rules
Interfaces: User-Interface Design Patterns in the Unix Environment
Applying the Rule of Least Surprise
History of Interface Design on Unix
Evaluating Interface Designs
Tradeoffs between CLI and Visual Interfaces
Transparency, Expressiveness, and Configurability
Unix Interface Design Patterns
Applying Unix Interface-Design Patterns
The Web Browser as a Universal Front End
Silence Is Golden
Optimization
Don't Just Do Something, Stand There!
Measure before Optimizing
Nonlocality Considered Harmful
Throughput vs. Latency
Complexity: As Simple As Possible, but No Simpler
Speaking of Complexity
A Tale of Five Editors
The Right Size for an Editor
The Right Size of Software
Implementation
Languages: To C or Not To C?
Unix's Cornucopia of Languages
Why Not C?
Interpreted Languages and Mixed Strategies
Language Evaluations
Trends for the Future
Choosing an X Toolkit
Tools: The Tactics of Development
A Developer-Friendly Operating System
Choosing an Editor
Special-Purpose Code Generators
make: Automating Your Recipes
Version-Control Systems
Runtime Debugging
Profiling
Combining Tools with Emacs
Reuse: On Not Reinventing the Wheel
The Tale of J. Random Newbie
Transparency as the Key to Reuse
From Reuse to Open Source
The Best Things in Life Are Open
Where to Look?
Issues in Using Open-Source Software
Licensing Issues
Community
Portability: Software Portability and Keeping Up Standards
Evolution of C
Unix Standards
IETF and the RFC Standards Process
Specifications as DNA, Code as RNA
Programming for Portability
Internationalization
Portability, Open Standards, and Open Source
Documentation: Explaining Your Code to a Web-Centric World
Documentation Concepts
The Unix Style
The Zoo of Unix Documentation Formats
The Present Chaos and a Possible Way Out
DocBook
Best Practices for Writing Unix Documentation
Open Source: Programming in the New Unix Community
Unix and Open Source
Best Practices for Working with Open-Source Developers
The Logic of Licenses: How to Pick One
Why You Should Use a Standard License
Varieties of Open-Source Licensing
Futures: Dangers and Opportunities
Essence and Accident in Unix Tradition
Plan 9: The Way the Future Was
Problems in the Design of Unix
Problems in the Environment of Unix
Problems in the Culture of Unix
Reasons to Believe
Glossary of Abbreviations
References
Contributors
Rootless Root: The Unix Koans of Master Foo
Index