Home > Store > Operating Systems, Server > Linux/UNIX/Open Source

larger cover

Add To My Wish List

Art of UNIX Programming, The

Register your product to gain access to bonus material or receive a coupon.

  • Description
  • Extras
  • Reviews
  • Sample Content

Product Author Bios

ERIC S. RAYMOND has been a Unix developer since 1982. Known as the resident anthropologist and roving ambassador of the open-source community, he wrote the movement's manifesto in The Cathedral and the Bazaar and is the editor of The New Hacker's Dictionary.

"Reading this book has filled a gap in my education. I feel a sense of completion, understand that UNIX is really a style of community. Now I get it, at least I get it one level deeper than I ever did before. This book came at a perfect moment for me, a moment when I shifted from visualizing programs as things to programs as the shadows cast by communities. From this perspective, Eric makes UNIX make perfect sense."
--Kent Beck, author of Extreme Programming Explained, Test Driven Development, and Contributing to Eclipse

"A delightful, fascinating read, and the lessons in problem-solvng are essential to every programmer, on any OS."
--Bruce Eckel, author of Thinking in Java and Thinking in C++

Writing better software: 30 years of UNIX development wisdom

In this book, five years in the making, the author encapsulates three decades of unwritten, hard-won software engineering wisdom. Raymond brings together for the first time the philosophy, design patterns, tools, culture, and traditions that make UNIX home to the world's best and most innovative software, and shows how these are carried forward in Linux and today's open-source movement. Using examples from leading open-source projects, he shows UNIX and Linux programmers how to apply this wisdom in building software that's more elegant, more portable, more reusable, and longer-lived.

Raymond incorporates commentary from thirteen UNIX pioneers:

  • Ken Thompson, the inventor of UNIX.
  • Ken Arnold, part of the group that created the 4BSD UNIX releases and co-author of The Java Programming Language.
  • Steven M. Bellovin, co-creator of Usenet and co-author of Firewalls and Internet Security.
  • Stuart Feldman, a member of the Bell Labs UNIX development group and the author of make and f77.
  • Jim Gettys and Keith Packard, principal architects of the X windowing system.
  • Steve Johnson, author of yacc and of the Portable C Compiler.
  • Brian Kernighan, co-author of The C Programming Language, The UNIX Programming Environment, The Practice of Programming, and of the awk programming language.
  • David Korn, creator of the korn shell and author of The New Korn Shell Command and Programming Language.
  • Mike Lesk, a member of the Bell Labs development group and author of the ms macro package, the tbl and refer tools,lex and UUCP.
  • Doug McIlroy, Director of the Bell Labs research group where UNIX was born and inventor of the UNIX pipe.
  • Marshall Kirk McKusick, developer of the 4.2BSD fast filesystem and a leader of the 4.3BSD and 4.4BSD teams.
  • Henry Spencer, a leader among early UNIX developers, who created getopt, the first open-source string library, and a regular-expression engine used in 4.4BSD.

Customer Reviews

49 of 56 people found the following review helpful
4.0 out of 5 stars Highly informative and readable, though very biased, November 27, 2003
By A Customer
This review is from: The Art of UNIX Programming (The Addison-Wesley Professional Computng Series) (Paperback)
Raymond does a good job of explaining the philosophy driving the Unix-style of programming. Coming from a background programming Windows, I always thought of the Unix approach (lots of abbreviated command-line utilities, mini-languages, pipes, semi-unstructured text-based process integration) as down-right primitive. However, after reading this book, I've started to understand the philosophy (and the practical reasons) for adopting this approach. I'd definitely recommend this book especially to newbie programmers from the Windows or Mac (pre-OS X) worlds. That said, I do have some criticisms:

One of the problems with this book is the overly partisan tone it takes - one gets the impression that absolutely nothing Microsoft has ever done is of value, but the other major desktop PC OSes (Apple, Linux) represent different forms of perfection. (At home, I run Mac OSX, RedHat Linux and Windows, and have a reasonable sense of their relative strengths and weaknesses.)

So, be... Read more

Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No


48 of 58 people found the following review helpful
3.0 out of 5 stars Autohagiography with some programming tips, December 24, 2003
By A Customer
This review is from: The Art of UNIX Programming (The Addison-Wesley Professional Computng Series) (Paperback)
The writing style of this book tends to hurt the reading experience, as Raymond trumpets his own minor achievments in the free software community. The work feels like it needed one more rewrite before being released to the public: some related sources Raymond hadn't yet read at the time of writing, and some of his advice gets repetitive.

The exposition itself is not up to par with The Elements of Programming Style. Raymond tries to give a list of programming rules or principles to follow, but it reads more like a list of slogans that should be taken as axioms. While The Elements of Programming Style itself had a list of rules, the rules were well woven with each other, well defended, and they were used as a means of conveying a larger story. In Raymond's case, he relies upon the slogans in absence of such a story.

Thus, the book ends up more like a list of random unrelated tips. Some very profound, like his writings on threads (which he acknowleges Mark M. Miller for his help)... Read more

Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No


18 of 20 people found the following review helpful
4.0 out of 5 stars The patterns of UNIX and how you can use them, April 17, 2004
By 
This review is from: The Art of UNIX Programming (The Addison-Wesley Professional Computng Series) (Paperback)
Even for a primarily Windows programmer, this is a great book to read. He provides a great overview of the Unix design philosophy, its evolution over time, and the things that it still doesn't handle well (user-centered design). He also digs deeper into a lot of the patterns in program organization and coordination to help you choose what to build into a utility, what to expose as a library, and what to package as a set of binaries. There's even a small bit of programming advice from place to place. I'd highly recommend reading the book to at least get a sense of perspective when you're designing your next system. He's right on the mark that the Windows and UNIX worlds have a completely different philosophy on program construction, each with their own merits.

His comments about the Windows registry were a bit distressing, though -- not because they're negative, which I consider fine. Rather, it was obvious he'd never used it (comments like "there's no API for it") and it... Read more

Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No


Share your thoughts with other customers:
 See all 39 customer reviews...

Table of Contents

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.

Basics of the Unix philosophy.

The Unix philosophy in one lesson.

Applying the Unix philosophy.

Attitude matters too.

2. History.

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.

3. Contrasts.

The elements of operating-system style.

Operating-system comparisons.

What goes around, comes around.

II. DESIGN.

4. Modularity.

Encapsulation and optimal module size.

Compactness and orthogonality.

Libraries.

Unix and object-oriented languages.

Coding for modularity.

5. Textuality.

The Importance of Being Textual.

Data file metaformats.

Application protocol design.

Application protocol metaformats.

6. Transparency.

Some case studies.

Designing for transparency and discoverability.

Designing for maintainability.

7. Multiprogramming.

Separating complexity control from performance tuning.

Taxonomy of Unix IPC methods.

Problems and methods to avoid.

Process partitioning at the design level.

8. Minilanguages.

Taxonomy of languages.

Applying minilanguages.

Designing minilanguages.

9. Transformation.

Data-driven programming.

Ad-hoc code generation.

10. Configuration.

What should be configurable?

Where configurations live.

Run-control files.

Environment variables.

Command-line options.

How to choose among configuration-setting methods.

On breaking these rules.

11. Interfaces.

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 universal front end.

Silence is golden.

12. Optimization.

Don't just do something, stand there!

Measure before optimizing.

Non-locality considered harmful.

Throughput vs. latency.

13. Complexity.

Speaking of complexity.

A Tale of Five Editors.

The right size for an editor.

The right size of software.

III. IMPLEMENTATION.

14. Languages.

Unix's Cornucopia of Languages.

Why Not C?

Interpreted Languages and Mixed Strategies.

Language evaluations.

Trends for the Future.

Choosing an X toolkit.

15. Tools.

A developer-friendly operating system.

Choosing an editor.

Special-purpose code generators.

Make in non-C/C++ Development.

Version-control systems.

Run-time debugging.

Profiling.

Emacs as the universal front end.

16. Re-Use.

The tale of J. Random Newbie.

Transparency as the key to re-use.

From re-use to open source.

The best things in life are open.

Where should I look?

What are the issues in using open-source software?

Licensing issues.

IV. COMMUNITY.

17. Portability.

Evolution of C.

Unix standards.

Specifications as DNA, code as RNA.

Programming for Portability.

Internationalization.

Portability, open standards and open source.

18. Documentation.

Documentation concepts.

The Unix style.

The zoo of Unix documentation formats.

The present chaos and a possible way out.

The DocBook toolchain.

How to write Unix documentation.

19. Open Source.

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.

20. Futures.

Essence and accident in Unix tradition.

Problems in the design of Unix.

Problems in the environment of Unix.

Problems in the culture of Unix.

Reasons to believe.

A. Glossary of Abbreviations.

B. References.

C. Contributors.

Downloadable Sample Chapter

Download the Sample Chapter related to this title.

Index

Download the Index file related to this title.

Sample Pages

Download the sample pages (includes Chapter 1 and Index)

 
Best Value

Book + eBook Bundle  $98.98  $59.39

Book Price $43.99
eBook Price $15.40
eBook formats included

Buy

This book includes free shipping!

Buy

Book  $54.99  $43.99

Usually ships in 24 hours.

This book includes free shipping!

Buy

eBook (Watermarked)  $43.99  $35.19

Includes EPUB, MOBI, and PDF
About eBook Formats

This eBook includes the following formats, accessible from your Account page after purchase:

ePubEPUBThe open industry format known for its reflowable content and usability on supported mobile devices.

MOBIMOBIThe eBook format compatible with the Amazon Kindle and Amazon Kindle applications.

Adobe ReaderPDFThe popular standard, used most often with the free Adobe® Reader® software.

This eBook requires no passwords or activation to read. We customize your eBook by discretely watermarking it with your name, making it uniquely yours.

Purchase Reward: One Month Free Subscription
By completing any purchase on InformIT, you become eligible for an unlimited access one-month subscription to Safari Books Online.

Get access to thousands of books and training videos about technology, professional development and digital media from more than 40 leading publishers, including Addison-Wesley, Prentice Hall, Cisco Press, IBM Press, O'Reilly Media, Wrox, Apress, and many more. If you continue your subscription after your 30-day trial, you can receive 30% off a monthly subscription to the Safari Library for up to 12 months. That's a total savings of $199.