<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8">
<meta name="generator" content="pdf2htmlEX">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<link rel="stylesheet" href="https://static.pudn.com/base/css/base.min.css">
<link rel="stylesheet" href="https://static.pudn.com/base/css/fancy.min.css">
<link rel="stylesheet" href="https://static.pudn.com/prod/directory_preview_static/625da13d92dc900e627e9128/raw.css">
<script src="https://static.pudn.com/base/js/compatibility.min.js"></script>
<script src="https://static.pudn.com/base/js/pdf2htmlEX.min.js"></script>
<script>
try{
pdf2htmlEX.defaultViewer = new pdf2htmlEX.Viewer({});
}catch(e){}
</script>
<title></title>
</head>
<body>
<div id="sidebar" style="display: none">
<div id="outline">
</div>
</div>
<div id="pf1" class="pf w0 h0" data-page-no="1"><div class="pc pc1 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/625da13d92dc900e627e9128/bg1.jpg"><div class="t m0 x1 h2 y1 ff1 fs0 fc0 sc0 ls0 ws0">The Art of Unix Programming</div><div class="t m0 x2 h2 y2 ff2 fs0 fc0 sc0 ls0 ws0"> <span class="_ _0"> </span><span class="ff1"> </span></div><div class="t m0 x3 h3 y3 ff2 fs0 fc0 sc0 ls0 ws0"> <span class="fc1">Next</span></div><div class="t m0 x4 h4 y4 ff3 fs1 fc0 sc0 ls0 ws0">The Art of Unix Programming</div><div class="t m0 x4 h5 y5 ff3 fs2 fc0 sc0 ls0 ws0">Eric Steven Raymond</div><div class="t m0 x4 h3 y6 ff2 fs0 fc1 sc0 ls0 ws0">Thyrsus Enterprises</div><div class="t m0 x4 h3 y7 ff4 fs0 fc0 sc0 ls0 ws0"><<span class="fc1">esr@thyrsus.com</span>><span class="ff2"> </span></div><div class="t m0 x4 h3 y8 ff2 fs0 fc0 sc0 ls0 ws0">Copyright © 2003 Eric S. Raymond</div><div class="t m0 x5 h2 y9 ff1 fs0 fc0 sc0 ls0 ws0">Revision History</div><div class="t m0 x5 h3 ya ff2 fs0 fc0 sc0 ls0 ws0">Revision 0.0<span class="_ _1"> </span>1999<span class="_ _2"> </span>esr</div><div class="t m0 x5 h3 yb ff2 fs0 fc0 sc0 ls0 ws0">Public HTML draft, first four chapters only. </div><div class="t m0 x5 h3 yc ff2 fs0 fc0 sc0 ls0 ws0">Revision 0.1<span class="_ _1"> </span>16 November 2002<span class="_ _3"> </span>esr</div><div class="t m0 x5 h3 yd ff2 fs0 fc0 sc0 ls0 ws0">First DocBook draft, fifteen chapters. Released to Mark Taub at AW. </div><div class="t m0 x5 h3 ye ff2 fs0 fc0 sc0 ls0 ws0">Revision 0.2<span class="_ _1"> </span>2 January 2003<span class="_ _4"> </span>esr</div><div class="t m0 x5 h3 yf ff2 fs0 fc0 sc0 ls0 ws0">First manuscript walkthrough at Chapter 7. Released to Dmitry Kirsanov at AW </div><div class="t m0 x5 h3 y10 ff2 fs0 fc0 sc0 ls0 ws0">production. </div><div class="t m0 x5 h3 y11 ff2 fs0 fc0 sc0 ls0 ws0">Revision 0.3<span class="_ _1"> </span>22 January 2003<span class="_ _5"> </span>esr</div><div class="t m0 x5 h3 y12 ff2 fs0 fc0 sc0 ls0 ws0">First eighteen-chapter draft. Manuscript walkthrough at Chapter 12. Limited release for </div><div class="t m0 x5 h3 y13 ff2 fs0 fc0 sc0 ls0 ws0">early reviewers. </div><div class="t m0 x5 h3 y14 ff2 fs0 fc0 sc0 ls0 ws0">Revision 0.4<span class="_ _1"> </span>5 February 2003<span class="_ _5"> </span>esr</div><div class="t m0 x5 h3 y15 ff2 fs0 fc0 sc0 ls0 ws0">Release for public review. </div><div class="t m0 x5 h3 y16 ff2 fs0 fc0 sc0 ls0 ws0">Revision 0.41<span class="_ _6"> </span>11 February 2003<span class="_ _7"> </span>esr</div><div class="t m0 x5 h3 y17 ff2 fs0 fc0 sc0 ls0 ws0">Corrections and additions to Mac OS case study. A bit more about binary files as caches. </div><div class="t m0 x5 h3 y18 ff2 fs0 fc0 sc0 ls0 ws0">Added cite of Butler Lampson. Additions to history chapter. Note in futures chapter about </div><div class="t m0 x5 h3 y19 ff2 fs0 fc0 sc0 ls0 ws0">C and exceptions. Many typo fixes. </div><div class="t m0 x5 h3 y1a ff2 fs0 fc0 sc0 ls0 ws0">Revision 0.42<span class="_ _6"> </span>12 February 2003<span class="_ _7"> </span>esr</div><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a></div><div class="pi" data-data='{"ctm":[1.568627,0.000000,0.000000,1.568627,0.000000,0.000000]}'></div></div>
</body>
</html>
<div id="pf2" class="pf w0 h0" data-page-no="2"><div class="pc pc2 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/625da13d92dc900e627e9128/bg2.jpg"><div class="t m0 x5 h3 y1b ff2 fs0 fc0 sc0 ls0 ws0">Add fcntl/ioctl to things Unix got wrong. </div><div class="t m0 x4 h6 y1c ff3 fs3 fc0 sc0 ls0 ws0">Dedication</div><div class="t m0 x4 h3 y1d ff2 fs0 fc0 sc0 ls0 ws0">To Ken Thompson and Dennis Ritchie, because you inspired me.</div><div class="t m0 x4 h2 y1e ff1 fs0 fc0 sc0 ls0 ws0">Table of Contents</div><div class="t m0 x4 h3 y1f ff2 fs0 fc1 sc0 ls0 ws0">Requests for reviewers and copy-editors</div><div class="t m0 x4 h3 y20 ff2 fs0 fc1 sc0 ls0 ws0">Preface</div><div class="t m0 x6 h3 y21 ff2 fs0 fc1 sc0 ls0 ws0">Who Should Read This Book</div><div class="t m0 x6 h3 y22 ff2 fs0 fc1 sc0 ls0 ws0">How To Use This Book</div><div class="t m0 x6 h3 y23 ff2 fs0 fc1 sc0 ls0 ws0">Related References</div><div class="t m0 x6 h3 y24 ff2 fs0 fc1 sc0 ls0 ws0">Conventions Used In This Book</div><div class="t m0 x6 h3 y25 ff2 fs0 fc1 sc0 ls0 ws0">Our Case Studies</div><div class="t m0 x6 h3 y26 ff2 fs0 fc1 sc0 ls0 ws0">Author's Acknowledgements</div><div class="t m0 x4 h3 y27 ff2 fs0 fc0 sc0 ls0 ws0">I. <span class="fc1">Context</span></div><div class="t m0 x6 h3 y28 ff2 fs0 fc0 sc0 ls0 ws0">1. <span class="fc1">Philosophy</span></div><div class="t m0 x7 h3 y29 ff2 fs0 fc1 sc0 ls0 ws0">Culture? What culture?</div><div class="t m0 x7 h3 y2a ff2 fs0 fc1 sc0 ls0 ws0">The durability of Unix</div><div class="t m0 x7 h3 y2b ff2 fs0 fc1 sc0 ls0 ws0">The case against learning Unix culture</div><div class="t m0 x7 h3 y2c ff2 fs0 fc1 sc0 ls0 ws0">What Unix gets wrong</div><div class="t m0 x7 h3 y2d ff2 fs0 fc1 sc0 ls0 ws0">What Unix gets right</div><div class="t m0 x8 h3 y2e ff2 fs0 fc1 sc0 ls0 ws0">Open-source software</div><div class="t m0 x8 h3 y2f ff2 fs0 fc1 sc0 ls0 ws0">Cross-platform portability and open standards</div><div class="t m0 x8 h3 y30 ff2 fs0 fc1 sc0 ls0 ws0">The Internet</div><div class="t m0 x8 h3 y31 ff2 fs0 fc1 sc0 ls0 ws0">The open-source community</div><div class="t m0 x8 h3 y32 ff2 fs0 fc1 sc0 ls0 ws0">Flexibility in depth</div><div class="t m0 x8 h3 y33 ff2 fs0 fc1 sc0 ls0 ws0">Unix is fun to hack</div><div class="t m0 x8 h3 y34 ff2 fs0 fc1 sc0 ls0 ws0">The lessons of Unix can be applied elsewhere</div><div class="t m0 x7 h3 y35 ff2 fs0 fc1 sc0 ls0 ws0">Basics of the Unix philosophy</div><div class="t m0 x8 h3 y36 ff2 fs0 fc1 sc0 ls0 ws0">Rule of Modularity: Write simple parts connected by clean interfaces.</div><div class="t m0 x8 h3 y37 ff2 fs0 fc1 sc0 ls0 ws0">Rule of Composition: Design programs to be connected with other </div><div class="t m0 x8 h3 y38 ff2 fs0 fc1 sc0 ls0 ws0">programs.</div><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a></div><div class="pi" data-data='{"ctm":[1.568627,0.000000,0.000000,1.568627,0.000000,0.000000]}'></div></div>
<div id="pf3" class="pf w0 h0" data-page-no="3"><div class="pc pc3 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/625da13d92dc900e627e9128/bg3.jpg"><div class="t m0 x8 h3 y39 ff2 fs0 fc1 sc0 ls0 ws0">Rule of Clarity: Clarity is better than cleverness.</div><div class="t m0 x8 h3 y3a ff2 fs0 fc1 sc0 ls0 ws0">Rule of Simplicity: Design for simplicity; add complexity only where </div><div class="t m0 x8 h3 y3b ff2 fs0 fc1 sc0 ls0 ws0">you must.</div><div class="t m0 x8 h3 y3c ff2 fs0 fc1 sc0 ls0 ws0">Rule of Transparency: Design for visibility to make inspection and </div><div class="t m0 x8 h3 y3d ff2 fs0 fc1 sc0 ls0 ws0">debugging easier.</div><div class="t m0 x8 h3 y3e ff2 fs0 fc1 sc0 ls0 ws0">Rule of Robustness: Robustness is the child of transparency and </div><div class="t m0 x8 h3 y3f ff2 fs0 fc1 sc0 ls0 ws0">simplicity.</div><div class="t m0 x8 h3 y40 ff2 fs0 fc1 sc0 ls0 ws0">Rule of Least Surprise: In interface design, always do the least </div><div class="t m0 x8 h3 y41 ff2 fs0 fc1 sc0 ls0 ws0">surprising thing.</div><div class="t m0 x8 h3 y42 ff2 fs0 fc1 sc0 ls0 ws0">Rule of Repair: Repair what you can — but when you must fail, fail </div><div class="t m0 x8 h3 y43 ff2 fs0 fc1 sc0 ls0 ws0">noisily and as soon as possible.</div><div class="t m0 x8 h3 y44 ff2 fs0 fc1 sc0 ls0 ws0">Rule of Economy: Programmer time is expensive; conserve it in </div><div class="t m0 x8 h3 y45 ff2 fs0 fc1 sc0 ls0 ws0">preference to machine time.</div><div class="t m0 x8 h3 y46 ff2 fs0 fc1 sc0 ls0 ws0">Rule of Generation: Avoid hand-hacking; write programs to write </div><div class="t m0 x8 h3 y47 ff2 fs0 fc1 sc0 ls0 ws0">programs when you can.</div><div class="t m0 x8 h3 y48 ff2 fs0 fc1 sc0 ls0 ws0">Rule of Representation: Use smart data so program logic can be stupid </div><div class="t m0 x8 h3 y49 ff2 fs0 fc1 sc0 ls0 ws0">and robust.</div><div class="t m0 x8 h3 y4a ff2 fs0 fc1 sc0 ls0 ws0">Rule of Separation: Separate policy from mechanism; separate </div><div class="t m0 x8 h3 y4b ff2 fs0 fc1 sc0 ls0 ws0">interfaces from engines.</div><div class="t m0 x8 h3 y4c ff2 fs0 fc1 sc0 ls0 ws0">Rule of Optimization: Prototype before polishing. Get it working before </div><div class="t m0 x8 h3 y4d ff2 fs0 fc1 sc0 ls0 ws0">you optimize it.</div><div class="t m0 x8 h3 y4e ff2 fs0 fc1 sc0 ls0 ws0">Rule of Diversity: Distrust all claims for one true way.</div><div class="t m0 x8 h3 y4f ff2 fs0 fc1 sc0 ls0 ws0">Rule of Extensibility: Design for the future, because it will be here </div><div class="t m0 x8 h3 y50 ff2 fs0 fc1 sc0 ls0 ws0">sooner than you think.</div><div class="t m0 x7 h3 y51 ff2 fs0 fc1 sc0 ls0 ws0">The Unix philosophy in one lesson</div><div class="t m0 x7 h3 y52 ff2 fs0 fc1 sc0 ls0 ws0">Applying the Unix philosophy</div><div class="t m0 x7 h3 y53 ff2 fs0 fc1 sc0 ls0 ws0">Attitude matters too</div><div class="t m0 x6 h3 y54 ff2 fs0 fc0 sc0 ls0 ws0">2. <span class="fc1">History</span></div><div class="t m0 x7 h3 y55 ff2 fs0 fc1 sc0 ls0 ws0">Origins and history of Unix, 1969-1995</div><div class="t m0 x8 h3 y56 ff2 fs0 fc1 sc0 ls0 ws0">Genesis: 1969-1971</div><div class="t m0 x8 h3 y57 ff2 fs0 fc1 sc0 ls0 ws0">Exodus: 1971-1980</div><div class="t m0 x8 h3 y58 ff2 fs0 fc1 sc0 ls0 ws0">TCP/IP and the Unix Wars: 1980-1990</div><div class="t m0 x8 h3 y59 ff2 fs0 fc1 sc0 ls0 ws0">Blows against the empire: 1991-1995</div><div class="t m0 x7 h3 y5a ff2 fs0 fc1 sc0 ls0 ws0">Origins and history of the hackers, 1961-1995</div><div class="t m0 x8 h3 y5b ff2 fs0 fc1 sc0 ls0 ws0">At play in the groves of academe: 1961-1980</div><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a></div><div class="pi" data-data='{"ctm":[1.568627,0.000000,0.000000,1.568627,0.000000,0.000000]}'></div></div>
<div id="pf4" class="pf w0 h0" data-page-no="4"><div class="pc pc4 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/625da13d92dc900e627e9128/bg4.jpg"><div class="t m0 x8 h3 y39 ff2 fs0 fc1 sc0 ls0 ws0">Internet fusion and the Free Software Movement: 1981-1991</div><div class="t m0 x8 h3 y3a ff2 fs0 fc1 sc0 ls0 ws0">Linux and the pragmatist reaction: 1991-1998</div><div class="t m0 x7 h3 y3b ff2 fs0 fc1 sc0 ls0 ws0">The open-source movement: 1998 and onward.</div><div class="t m0 x7 h3 y3c ff2 fs0 fc1 sc0 ls0 ws0">The lessons of Unix history</div><div class="t m0 x6 h3 y3d ff2 fs0 fc0 sc0 ls0 ws0">3. <span class="fc1">Contrasts</span></div><div class="t m0 x7 h3 y3e ff2 fs0 fc1 sc0 ls0 ws0">The elements of operating-system style</div><div class="t m0 x8 h3 y3f ff2 fs0 fc1 sc0 ls0 ws0">What is the unifying idea?</div><div class="t m0 x8 h3 y40 ff2 fs0 fc1 sc0 ls0 ws0">Cooperating processes</div><div class="t m0 x8 h3 y41 ff2 fs0 fc1 sc0 ls0 ws0">Internal boundaries</div><div class="t m0 x8 h3 y42 ff2 fs0 fc1 sc0 ls0 ws0">File attributes and record structures</div><div class="t m0 x8 h3 y43 ff2 fs0 fc1 sc0 ls0 ws0">Binary file formats</div><div class="t m0 x8 h3 y44 ff2 fs0 fc1 sc0 ls0 ws0">Preferred UI style</div><div class="t m0 x8 h3 y45 ff2 fs0 fc1 sc0 ls0 ws0">Who is the intended audience?</div><div class="t m0 x8 h3 y46 ff2 fs0 fc1 sc0 ls0 ws0">What are the entry barriers to development?</div><div class="t m0 x7 h3 y47 ff2 fs0 fc1 sc0 ls0 ws0">Operating-system comparisons</div><div class="t m0 x8 h3 y48 ff2 fs0 fc1 sc0 ls0 ws0">VMS</div><div class="t m0 x8 h3 y49 ff2 fs0 fc1 sc0 ls0 ws0">Mac OS</div><div class="t m0 x8 h3 y4a ff2 fs0 fc1 sc0 ls0 ws0">OS/2</div><div class="t m0 x8 h3 y4b ff2 fs0 fc1 sc0 ls0 ws0">Windows NT</div><div class="t m0 x8 h3 y4c ff2 fs0 fc1 sc0 ls0 ws0">BeOS</div><div class="t m0 x8 h3 y4d ff2 fs0 fc1 sc0 ls0 ws0">Linux</div><div class="t m0 x7 h3 y4e ff2 fs0 fc1 sc0 ls0 ws0">What goes around, comes around</div><div class="t m0 x4 h3 y4f ff2 fs0 fc0 sc0 ls0 ws0">II. <span class="fc1">Design</span></div><div class="t m0 x6 h3 y50 ff2 fs0 fc0 sc0 ls0 ws0">4. <span class="fc1">Modularity</span></div><div class="t m0 x7 h3 y51 ff2 fs0 fc1 sc0 ls0 ws0">Encapsulation and optimal module size</div><div class="t m0 x7 h3 y52 ff2 fs0 fc1 sc0 ls0 ws0">Compactness and orthogonality</div><div class="t m0 x8 h3 y53 ff2 fs0 fc1 sc0 ls0 ws0">Compactness</div><div class="t m0 x8 h3 y54 ff2 fs0 fc1 sc0 ls0 ws0">Orthogonality</div><div class="t m0 x8 h3 y55 ff2 fs0 fc1 sc0 ls0 ws0">The DRY rule</div><div class="t m0 x8 h3 y56 ff2 fs0 fc1 sc0 ls0 ws0">The value of detachment</div><div class="t m0 x7 h3 y57 ff2 fs0 fc1 sc0 ls0 ws0">Top-down, bottom-up, and glue layers</div><div class="t m0 x8 h3 y58 ff2 fs0 fc1 sc0 ls0 ws0">Case study: C considered as thin glue</div><div class="t m0 x7 h3 y59 ff2 fs0 fc1 sc0 ls0 ws0">Library layering</div><div class="t m0 x8 h3 y5a ff2 fs0 fc1 sc0 ls0 ws0">Case study: GIMP plugins</div><div class="t m0 x7 h3 y5b ff2 fs0 fc1 sc0 ls0 ws0">Unix and object-oriented languages</div><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a></div><div class="pi" data-data='{"ctm":[1.568627,0.000000,0.000000,1.568627,0.000000,0.000000]}'></div></div>
<div id="pf5" class="pf w0 h0" data-page-no="5"><div class="pc pc5 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/625da13d92dc900e627e9128/bg5.jpg"><div class="t m0 x7 h3 y39 ff2 fs0 fc1 sc0 ls0 ws0">Coding for modularity</div><div class="t m0 x6 h3 y3a ff2 fs0 fc0 sc0 ls0 ws0">5. <span class="fc1">Textuality</span></div><div class="t m0 x7 h3 y3b ff2 fs0 fc1 sc0 ls0 ws0">The Importance of Being Textual</div><div class="t m0 x8 h3 y3c ff2 fs0 fc1 sc0 ls0 ws0">Case study: Unix password file format</div><div class="t m0 x8 h3 y3d ff2 fs0 fc1 sc0 ls0 ws0">Case study: .newsrc format</div><div class="t m0 x8 h3 y3e ff2 fs0 fc1 sc0 ls0 ws0">Case study: The PNG graphics file format</div><div class="t m0 x7 h3 y3f ff2 fs0 fc1 sc0 ls0 ws0">Data file metaformats</div><div class="t m0 x8 h3 y40 ff2 fs0 fc1 sc0 ls0 ws0">/etc/passwd style</div><div class="t m0 x8 h3 y41 ff2 fs0 fc1 sc0 ls0 ws0">RFC-822 format</div><div class="t m0 x8 h3 y42 ff2 fs0 fc1 sc0 ls0 ws0">Fortune-cookie format</div><div class="t m0 x8 h3 y43 ff2 fs0 fc1 sc0 ls0 ws0">XML</div><div class="t m0 x8 h3 y44 ff2 fs0 fc1 sc0 ls0 ws0">Windows INI format</div><div class="t m0 x8 h3 y45 ff2 fs0 fc1 sc0 ls0 ws0">Unix textual file format conventions</div><div class="t m0 x7 h3 y46 ff2 fs0 fc1 sc0 ls0 ws0">Application protocol design</div><div class="t m0 x8 h3 y47 ff2 fs0 fc1 sc0 ls0 ws0">Case study: SMTP, a simple socket protocol</div><div class="t m0 x8 h3 y48 ff2 fs0 fc1 sc0 ls0 ws0">Case study: POP3, the Post Office Protocol</div><div class="t m0 x8 h3 y49 ff2 fs0 fc1 sc0 ls0 ws0">Case study: IMAP, the Internet Message Access Protocol</div><div class="t m0 x7 h3 y4a ff2 fs0 fc1 sc0 ls0 ws0">Application protocol metaformats</div><div class="t m0 x8 h3 y4b ff2 fs0 fc1 sc0 ls0 ws0">The classical Internet application metaprotocol</div><div class="t m0 x8 h3 y4c ff2 fs0 fc1 sc0 ls0 ws0">HTTP as a universal application protocol</div><div class="t m0 x8 h3 y4d ff2 fs0 fc1 sc0 ls0 ws0">BEEP</div><div class="t m0 x8 h3 y4e ff2 fs0 fc1 sc0 ls0 ws0">XML-RPC. SOAP, and Jabber</div><div class="t m0 x7 h3 y4f ff2 fs0 fc1 sc0 ls0 ws0">Binary files as caches</div><div class="t m0 x6 h3 y50 ff2 fs0 fc0 sc0 ls0 ws0">6. <span class="fc1">Multiprogramming</span></div><div class="t m0 x7 h3 y51 ff2 fs0 fc1 sc0 ls0 ws0">Separating complexity control from performance tuning</div><div class="t m0 x7 h3 y52 ff2 fs0 fc1 sc0 ls0 ws0">Handing off tasks to specialist programs</div><div class="t m0 x8 h3 y53 ff2 fs0 fc1 sc0 ls0 ws0">Case study: the mutt mail user agent.</div><div class="t m0 x7 h3 y54 ff2 fs0 fc1 sc0 ls0 ws0">Pipes, redirection, and filters</div><div class="t m0 x8 h3 y55 ff2 fs0 fc1 sc0 ls0 ws0">Case study: Piping to a Pager</div><div class="t m0 x8 h3 y56 ff2 fs0 fc1 sc0 ls0 ws0">Case study: making word lists</div><div class="t m0 x8 h3 y57 ff2 fs0 fc1 sc0 ls0 ws0">Case study: pic2graph</div><div class="t m0 x8 h3 y58 ff2 fs0 fc1 sc0 ls0 ws0">Case study: bc(1) and dc(1)</div><div class="t m0 x7 h3 y59 ff2 fs0 fc1 sc0 ls0 ws0">Slave processes</div><div class="t m0 x8 h3 y5a ff2 fs0 fc1 sc0 ls0 ws0">Case study: scp(1) and ssh</div><div class="t m0 x7 h3 y5b ff2 fs0 fc1 sc0 ls0 ws0">Wrappers</div><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a></div><div class="pi" data-data='{"ctm":[1.568627,0.000000,0.000000,1.568627,0.000000,0.000000]}'></div></div>