The Art of Unix Programming

"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 wisdomIn 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.

[1]  D. L. Parnas,et al.  On the criteria to be used in decomposing systems into modules , 1972, Software Pioneers.

[2]  Douglas Thomas Hacker Culture , 2002 .

[3]  Lutz Prechelt,et al.  An empirical comparison of C, C++, Java, Perl, Python, Rexx, and Tcl for a search/string-processing program , 2000 .

[4]  Leslie Hatton Does OO sync with the way we think , 1998 .

[5]  Paul DuBois Software portability with imake , 1993 .

[6]  Linus Torvalds,et al.  Just for Fun: The Story of an Accidental Revolutionary , 2001 .

[7]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[8]  Harvey Friedman Programming Pearls, 2nd Edition , 2000 .

[9]  Gary V. Vaughan,et al.  GNU Autoconf, Automake, and Libtool , 2000 .

[10]  Jeffrey E. F. Friedl Mastering Regular Expressions , 1997 .

[11]  Jean Cocteau,et al.  The White book , 1989 .

[12]  Robert Sanchez The Digital Press. , 1995 .

[13]  Samuel B. Williams,et al.  ASSOCIATION FOR COMPUTING MACHINERY , 2000 .

[14]  Rob Pike Notes on Programming in C , 1997 .

[15]  Elliotte Rusty Harold,et al.  XML in a Nutshell , 2001 .

[16]  Kiem-Phong Vo The discipline and method architecture for reusable libraries , 2000 .

[17]  Steve Heller C++: A Dialog: Programming with the C++ Standard Library with Cdrom , 2002 .

[18]  Mike Gancarz The Unix Philosophy , 1994 .

[19]  Jon Louis Bentley,et al.  Programming pearls , 1987, CACM.

[20]  Alan Cooper,et al.  The Inmates are Running the Asylum , 1999, Software-Ergonomie.

[21]  Steven Levy,et al.  Hackers: Heroes of the Computer Revolution , 1984 .

[22]  Dennis Ritchie,et al.  The UNIX system: The evolution of the UNIX time-sharing system , 1979, AT&T Bell Laboratories Technical Journal.

[23]  Andreas Gebhardt,et al.  Rapid prototyping , 2003 .

[24]  Diomidis Spinellis,et al.  Notable design patterns for domain-specific languages , 2001, J. Syst. Softw..

[25]  Eric S. Raymond,et al.  Learning GNU Emacs (2nd ed.) , 1996 .

[26]  Evan Schaffer,et al.  The UNIX Shell As a Fourth Generation Language , 2001 .

[27]  Rhett Herman As simple as possible , 2002 .

[28]  B. A. Tague,et al.  UNIX time-sharing system: Foreword , 1978, The Bell System Technical Journal.

[29]  Ken Thompson,et al.  The UNIX time-sharing system , 1974, CACM.

[30]  Frederick P. Brooks,et al.  Computer architecture - concepts and evolution , 1997 .

[31]  Andy Oram,et al.  Managing Projects with Make , 1993 .

[32]  Chris DiBona,et al.  Open Sources: Voices from the Open Source Revolution , 1999 .

[33]  John K. Ousterhout,et al.  Why Threads Are A Bad Idea (for most purposes) , 2003 .

[34]  青島 矢一,et al.  書評 カーリス Y. ボールドウィン/キム B. クラーク著 安藤晴彦訳『デザイン・ルール:モジュール化パワー』 Carliss Y. Baldwin & Kim B. Clark/Design Rules, Vol. 1: The Power of Modularity , 2005 .

[35]  Edward Edward Yourdon,et al.  Death March: The Complete Software Developer's Guide to Surviving Mission Impossible Projects , 1999 .

[36]  Barton P. Miller,et al.  Fuzz Revisited: A Re-examination of the Reliability of UNIX Utilities and Services , 1995 .

[37]  Edward Yourdon,et al.  Death March , 1997 .

[38]  Jerome H. Saltzer,et al.  End-to-end arguments in system design , 1984, TOCS.

[39]  David Thomas,et al.  The Pragmatic Programmer: From Journeyman to Master , 1999 .

[40]  S. R. Bourne,et al.  The UNIX shell , 1986 .

[41]  Chris Fehily Windows XP , 2003 .

[42]  Steve Heller Who's Afraid of C++ , 1996 .

[43]  Ya Khalidi Life with Unix , 1990 .

[44]  R. Fox Silence is golden. , 1998, Nursing standard (Royal College of Nursing (Great Britain) : 1987).

[45]  Kim B. Clark,et al.  The Option Value of Modularity in Design: An Example From Design Rules, Volume 1: The Power of Modularity , 2000 .

[46]  Dennis Ritchie,et al.  The development of the C language , 1993, HOPL-II.

[47]  Larry Wall,et al.  Learning Perl , 1993 .

[48]  Richard M. Stallman,et al.  The GNU manifesto , 1990 .

[49]  Richard Poynder,et al.  The Open Source Movement , 2001 .

[50]  Jr. Frederick P. Brooks,et al.  The mythical man-month (anniversary ed.) , 1995 .

[51]  Butler W. Lampson,et al.  Hints for Computer System Design , 1983, IEEE Software.

[52]  David Flanagan,et al.  Java in a Nutshell , 1996 .

[53]  E. P. Schan,et al.  Recommended C Style and Coding Standards , 1997 .

[54]  Eric S. Raymond,et al.  Learning GNU Emacs , 1991 .

[55]  Brian W. Kernighan Experience with Tcl/Tk for Scientific and Engineering Visualization , 1995, Tcl/Tk Workshop.

[56]  J.-L. Dhondt Out of memory , 1998 .

[57]  Andy Oram,et al.  Programming with GNU software , 1996 .

[58]  Andrew S. Tanenbaum,et al.  A Critique of the Remote Procedure Call Paradigm , 1988 .

[59]  Clayton M. Christensen The Innovator's Dilemma , 1997 .

[60]  David W. Barron Scripting languages , 2003 .

[61]  Henry Spencer,et al.  Recommended C Style and Coding Standards , 1992 .

[62]  Brian W. Kernighan,et al.  The C Programming Language, Second Edition , 1988 .

[63]  Richard Mateosian Windows 2000 , 2000, IEEE Micro.

[64]  Peter H. Salus A quarter century of UNIX , 1994 .

[65]  G. A. Miller THE PSYCHOLOGICAL REVIEW THE MAGICAL NUMBER SEVEN, PLUS OR MINUS TWO: SOME LIMITS ON OUR CAPACITY FOR PROCESSING INFORMATION 1 , 1956 .

[66]  Jakob Nielsen,et al.  The Anti-Mac interface , 1996, CACM.

[67]  Neal Stephenson In the Beginning... Was the Command Line , 1999 .

[68]  Paul Barry,et al.  Programming Perl 3rd Edition , 2000 .

[69]  D. Flannanghan JavaScript: The definitive guide , 1999 .

[70]  Bjarne Stroustrup,et al.  C++ Programming Language , 1986, IEEE Softw..

[71]  W. Richard Stevens,et al.  Unix network programming , 1990, CCRV.

[72]  Don Bolinger,et al.  Applying RCS and SCCS , 1995 .

[73]  I. staff Front end , 2002 .

[74]  John K. Ousterhout,et al.  Tcl and the Tk Toolkit , 1994 .

[75]  Eric S. Raymond,et al.  The cathedral and the bazaar , 1998, First Monday.

[76]  Brian W. Kernighan,et al.  The UNIX™ programming environment , 1979, Softw. Pract. Exp..

[77]  Youshouzhai Gu Echo , 1980, The Craft of Poetry.

[78]  R. W. Lucky,et al.  Free software [Reflections] , 1999 .

[79]  Brian W. Kernighan,et al.  The Practice of Programming , 1999 .

[80]  Paul Reps,et al.  Zen flesh, Zen bones , 1971 .

[81]  Mark Lutz,et al.  Programming Python , 1996 .

[82]  Doug Tidwell XSLT - mastering XML transformations , 2001 .

[83]  Eric S. Raymond,et al.  The New Hacker's Dictionary , 1991 .

[84]  Randy Appleton Improving context switching performance for idle tasks in linux , 1999, Computers and Their Applications.

[85]  T.S.J.G. B¿gels,et al.  Publish or Perish , 2005 .

[86]  Fred P. Brooks,et al.  The Mythical Man-Month , 1975, Reliable Software.

[87]  N Angier NO, NO, NO... , 2000, Science.

[88]  Larry Wall,et al.  Programming Perl , 1991 .

[89]  Eric S. Raymond,et al.  The New Hacker's Dictionary, 2nd Ed. , 1993 .

[90]  Brian W. Kernighan,et al.  Software tools , 1976, SOEN.

[91]  Brent B Welch,et al.  Practical Programming in Tcl and Tk , 1999 .

[92]  Craig A. Knoblock,et al.  Advanced Programming in the UNIX Environment , 1992, Addison-Wesley professional computing series.