Art of UNIX Programming, The

by
Edition: 1st
Format: Paperback
Pub. Date: 2003-09-23
Publisher(s): Addison-Wesley Professional
List Price: $54.99

Rent Book

Select for Price
There was a problem. Please try again later.

Rent Digital

Rent Digital Options
Online:1825 Days access
Downloadable:Lifetime Access
$63.59
Online:1825 Days access
Downloadable:Lifetime Access
$63.59
*To support the delivery of the digital material to you, a digital delivery fee of $3.99 will be charged on each digital item.
$63.59*

New Book

We're Sorry
Sold Out

Used Book

We're Sorry
Sold Out

How Marketplace Works:

  • This item is offered by an independent seller and not shipped from our warehouse
  • Item details like edition and cover design may differ from our description; see seller's comments before ordering.
  • Sellers much confirm and ship within two business days; otherwise, the order will be cancelled and refunded.
  • Marketplace purchases cannot be returned to eCampus.com. Contact the seller directly for inquiries; if no response within two days, contact customer service.
  • Additional shipping costs apply to Marketplace purchases. Review shipping costs at checkout.

Summary

- Written by Open Source icon Eric S. Raymond - the author of The Cathedral and the Bazaar. - Learn how the UNIX masters design software that is fast, portable, reuseable, modular, and long-lived. - Includes cameo appearances by UNIX luminaries Brian Kernighan, Doug McIlroy, David Korn, Jim Gettys, Keith Packard, Henry Spencer, Ken Arnold, Mike Lesk, Stuart Feldman and Steve Bellovin.

Author Biography

Eric S. Raymond has been a UNIX developer since 1982. He is known as the resident anthropologist and roving ambassador of the open-source community

Table of Contents

Prefacep. xxv
Contextp. 1
Philosophy: Philosophy Mattersp. 3
Culture? What Culture?p. 3
The Durability of Unixp. 4
The Case against Learning Unix Culturep. 5
What Unix Gets Wrongp. 6
What Unix Gets Rightp. 7
Basics of the Unix Philosophyp. 11
The Unix Philosophy in One Lessonp. 25
Applying the Unix Philosophyp. 26
Attitude Matters Toop. 26
History: A Tale of Two Culturesp. 29
Origins and History of Unix, 1969-1995p. 29
Origins and History of the Hackers, 1961-1995p. 43
The Open-Source Movement: 1998 and Onwardp. 49
The Lessons of Unix Historyp. 51
Contrasts: Comparing the Unix Philosophy with Othersp. 53
The Elements of Operating-System Stylep. 53
Operating-System Comparisonsp. 61
What Goes Around, Comes Aroundp. 78
Designp. 81
Modularity: Keeping It Clean, Keeping It Simplep. 83
Encapsulation and Optimal Module Sizep. 85
Compactness and Orthogonalityp. 87
Software Is a Many-Layered Thingp. 95
Librariesp. 99
Unix and Object-Oriented Languagesp. 101
Coding for Modularityp. 103
Textuality: Good Protocols Make Good Practicep. 105
The Importance of Being Textualp. 107
Data File Metaformatsp. 112
Application Protocol Designp. 123
Application Protocol Metaformatsp. 127
Transparency: Let There Be Lightp. 133
Studying Casesp. 135
Designing for Transparency and Discoverabilityp. 148
Designing for Maintainabilityp. 154
Multiprogramming: Separating Processes to Separate Functionp. 157
Separating Complexity Control from Performance Tuningp. 159
Taxonomy of Unix IPC Methodsp. 160
Problems and Methods to Avoidp. 176
Process Partitioning at the Design Levelp. 181
Minilanguages: Finding a Notation That Singsp. 183
Understanding the Taxonomy of Languagesp. 185
Applying Minilanguagesp. 187
Designing Minilanguagesp. 206
Generation: Pushing the Specification Level Upwardsp. 215
Data-Driven Programmingp. 216
Ad-hoc Code Generationp. 225
Configuration: Starting on the Right Footp. 231
What Should Be Configurable?p. 231
Where Configurations Livep. 233
Run-Control Filesp. 234
Environment Variablesp. 238
Command-Line Optionsp. 242
How to Choose among the Methodsp. 248
On Breaking These Rulesp. 252
Interfaces: User-Interface Design Patterns in the Unix Environmentp. 253
Applying the Rule of Least Surprisep. 254
History of Interface Design on Unixp. 256
Evaluating Interface Designsp. 257
Tradeoffs between CLI and Visual Interfacesp. 259
Transparency, Expressiveness, and Configurabilityp. 264
Unix Interface Design Patternsp. 266
Applying Unix Interface-Design Patternsp. 280
The Web Browser as a Universal Front Endp. 281
Silence Is Goldenp. 284
Optimizationp. 287
Don't Just Do Something, Stand There!p. 287
Measure before Optimizingp. 288
Nonlocality Considered Harmfulp. 290
Throughput vs. Latencyp. 291
Complexity: As Simple As Possible, but No Simplerp. 295
Speaking of Complexityp. 296
A Tale of Five Editorsp. 302
The Right Size for an Editorp. 309
The Right Size of Softwarep. 316
Implementationp. 319
Languages: To C or Not To C?p. 321
Unix's Cornucopia of Languagesp. 321
Why Not C?p. 323
Interpreted Languages and Mixed Strategiesp. 325
Language Evaluationsp. 325
Trends for the Futurep. 344
Choosing an X Toolkitp. 346
Tools: The Tactics of Developmentp. 349
A Developer-Friendly Operating Systemp. 349
Choosing an Editorp. 350
Special-Purpose Code Generatorsp. 352
make: Automating Your Recipesp. 357
Version-Control Systemsp. 364
Runtime Debuggingp. 369
Profilingp. 370
Combining Tools with Emacsp. 370
Reuse: On Not Reinventing the Wheelp. 375
The Tale of J. Random Newbiep. 376
Transparency as the Key to Reusep. 379
From Reuse to Open Sourcep. 380
The Best Things in Life Are Openp. 381
Where to Look?p. 384
Issues in Using Open-Source Softwarep. 385
Licensing Issuesp. 386
Communityp. 391
Portability: Software Portability and Keeping Up Standardsp. 393
Evolution of Cp. 394
Unix Standardsp. 398
IETF and the RFC Standards Processp. 403
Specifications as DNA, Code as RNAp. 405
Programming for Portabilityp. 408
Internationalizationp. 413
Portability, Open Standards, and Open Sourcep. 414
Documentation: Explaining Your Code to a Web-Centric Worldp. 417
Documentation Conceptsp. 418
The Unix Stylep. 420
The Zoo of Unix Documentation Formatsp. 422
The Present Chaos and a Possible Way Outp. 426
DocBookp. 427
Best Practices for Writing Unix Documentationp. 434
Open Source: Programming in the New Unix Communityp. 437
Unix and Open Sourcep. 438
Best Practices for Working with Open-Source Developersp. 440
The Logic of Licenses: How to Pick Onep. 456
Why You Should Use a Standard Licensep. 457
Varieties of Open-Source Licensingp. 457
Futures: Dangers and Opportunitiesp. 461
Essence and Accident in Unix Traditionp. 461
Plan 9: The Way the Future Wasp. 464
Problems in the Design of Unixp. 466
Problems in the Environment of Unixp. 473
Problems in the Culture of Unixp. 475
Reasons to Believep. 478
Glossary of Abbreviationsp. 479
Referencesp. 483
Contributorsp. 495
Rootless Root: The Unix Koans of Master Foop. 499
Indexp. 511
Table of Contents provided by Ingram. All Rights Reserved.

Excerpts

PrefaceUnix is not so much an operating system as an oral history. Neal StephensonThere is a vast difference between knowledge and expertise. Knowledge lets you deduce the right thing to do; expertise makes the right thing a reflex, hardly requiring conscious thought at all.This book has a lot of knowledge in it, but it is mainly about expertise. It is going to try to teach you the things about Unix development that Unix experts know, but aren't aware that they know. It is therefore less about technicalia and more about shared culture than most Unix books both explicit and implicit culture, both conscious and unconscious traditions. It is not a 'how-to' book, it is a 'why-to' book.The why-to has great practical importance, because far too much software is poorly designed. Much of it suffers from bloat, is exceedingly hard to maintain, and is too difficult to port to new platforms or extend in ways the original programmers didn't anticipate. These problems are symptoms of bad design. We hope that readers of this book will learn something of what Unix has to teach about good design.This book is divided into four parts: Context, Design, Tools, and Community. The first part (Context) is philosophy and history, to help provide foundation and motivation for what follows. The second part (Design) unfolds the principles of the Unix philosophy into more specific advice about design and implementation. The third part (Tools) focuses on the software Unix provides for helping you solve problems. The fourth part (Community) is about the human-to-human transactions and agreements that make the Unix culture so effective at what it does.Because this is a book about shared culture, I never planned to write it alone. You will notice that the text includes guest appearances by prominent Unix developers, the shapers of the Unix tradition. The book went through an extended public review process during which I invited these luminaries to comment on and argue with the text. Rather than submerging the results of that review process in the final version, these guests were encouraged to speak with their own voices, amplifying and developing and even disagreeing with the main line of the text.In this book, when I use the editorial 'we' it is not to pretend omniscience but to reflect the fact that it attempts to articulate the expertise of an entire community.Because this book is aimed at transmitting culture, it includes much more in the way of history and folklore and asides than is normal for a technical book. Enjoy; these things, too, are part of your education as a Unix programmer. No single one of the historical details is vital, but the gestalt of them all is important. We think it makes a more interesting story this way. More importantly, understanding where Unix came from and how it got the way it is will help you develop an intuitive feel for the Unix style.For the same reason, we refuse to write as if history is over. You will find an unusually large number of references to the time of writing in this book. We do not wish to pretend that current practice reflects some sort of timeless and perfectly logical outcome of preordained destiny. References to time of writing are meant as an alert to the reader two or three or five years hence that the associated statements of fact may have become dated and should be double-checked.Other things this book is not is neither a C tutorial, nor a guide to the Unix commands and API. It is not a reference for sed or yacc or Perl or Python. It's not a network programming primer, nor an exhaustive guide to the mysteries of X. It's not a tour of Unix's internals and architecture, either. Other books cover these specifics better, and this book points you at them as appropriate.Beyond all these technical specifics, the Unix culture has an u

An electronic version of this book is available through VitalSource.

This book is viewable on PC, Mac, iPhone, iPad, iPod Touch, and most smartphones.

By purchasing, you will be able to view this book online, as well as download it, for the chosen number of days.

Digital License

You are licensing a digital product for a set duration. Durations are set forth in the product description, with "Lifetime" typically meaning five (5) years of online access and permanent download to a supported device. All licenses are non-transferable.

More details can be found here.

A downloadable version of this book is available through the eCampus Reader or compatible Adobe readers.

Applications are available on iOS, Android, PC, Mac, and Windows Mobile platforms.

Please view the compatibility matrix prior to purchase.