Preface
Foreword
UNIX is not so much an operating system as an oral history.
-
Translation: UNIX is not so much a operating system is not so much a word history
There Is a Vast Difference Between Knowledge and Expertise. Knowledge letts you dedu The right shing to do; Expertise Makes The Right Thing a Reflex, Hardly Requiring Conscious Thought at all.
The Knowledge System and Professional Skills. The knowledge system allows you to do what you do is correct; professional skills make the correct thing to become a conditional reflection - I don't need to deliberately think.
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 are not 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.
Translation: Although this book covers a lot of knowledge, it has focused on professional skills. This book tries to teach you some skills about UNIX development. Although UNIX experts have formed these skills in their minds, they have not realized this. Therefore, this book will not be technically concentrated in technology than most UNIX books, but more discussing the sharing culture, a culture that is clear and improving, a perception, and unknown tradition. This is not a book about "how to do this", but a book "why do this" 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 did not Anticipate. Thase Problems. We Hope That Readers of this Book Will Learn Somethingy What UNIX HAS TO TEACH ABOUT Good Design.
Translation: Since most software design is poor, "Why do you do this is especially important at the practice level. Many software suffers from code expansion, maintaining extreme difficulties, and it is difficult to transplant to new platforms, or unable to expand in a manner that the program developers did not expect. The problem of the above columns is the symptom of poor design. We hope that the readers can understand the good design idea to teach some UNIX.
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 This book is divided into four parts: background, design, tools and communities. The first part (background) is about philosophical and historical discussions, and its purpose is to provide basic and power for future discussions. The second part (design) launches some principles of UNIX philosophy to more specific design and implementation. The third part (tools) focuses on the software provided by UNIX, they are used to help you solve the problem. The fourth part (community) is about the contents of human and negotiation. It is to make UNIX culture so efficient.
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 .
Translation: This is a book about sharing culture, so I have never planned to make the car. You will notice the word in the word in the word Unix Developer-Uixi traditional shaper. This book has experienced a wide range of public reading processes, and I invited the above celebrities to comment and discuss articles. I encourage them to express their own point of view, expand, undertake, and even negate the main line of the text, rather than put the review result into the final version.
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. ....................................................................................................... "This word is not a fashion for God, but reflects such a fact that it is an expert view of the entire community to accurately express the entire community. Because this book aims to disseminate culture, it covers more historical, folk and lace stories. Let's appreciate it! These articles are also part of the education of a UNIX program developer. Historical detail elements are not that important, but their collection is powerful. We think that in this way can produce more interesting history. It is especially important to understand where UNIX can help you form a uniX style intuitive experience.
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.
Translation: For the same reason, we refuse to write history. You will find that you are unusual to quote the writing time in this book. We don't want to cover some of the eternal, perfect logically destined fate of today's industry. The writing time is a alarm, reminding the reader after 2 to 3 years, some related facts may be obvious, you need to repeat.
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 Other Books Cover, Either. Other Books Cover, Either. Other Books Cover, Spects You At the book, the book: This book is not a C language tutorial, Not a UNIX command and API introduction. It is not a reference manual for SED, YACC, Perl or Python. It is neither a network primary read book, nor is it a full revealing of the guidance of X. It is not a "guide book" in the UNIX internal mechanism and structural system. In fact, there are many books to better cover the above details. This book is only given to you in place.
Beyond all these technical specifics, the Unix culture has an unwritten engineering tradition that has developed over literally millions of man-years1 [1] of skilled effort. This book is written in the belief that understanding that tradition, and adding its design patterns to your Toolkit, Will Help You Become A Better Programmer and Designer.
The UNIX culture beyond all technical details, with a cultivated project tradition that has developed millions of years. Helps understand such a tradition, expand the UNIX design model to your toolbox, this book is in such a belief that it is born. It can help you become a more excellent programmer and designer.
Cultures consist of people, and the traditional way to learn Unix culture is from other people and through the folklore, by osmosis. This book is not a substitute for person-to-person acculturation, but it can help accelerate the process by allowing you to Tap the experience of others.
Translation: The culture is composed of people, and the traditional development of UNIX cultural methods is to learn from others, shallow movement, and learn through folk customs. This book is not an alternative to people's cultural heritage, but it can help you accelerate the process of using others experience.
Who Should Read this book
Who should read this book?
You should read this book if you are an experienced Unix programmer who is often in the position of either educating novice programmers or debating partisans of other operating systems, and you find it hard to articulate the benefits of the Unix approach translation: If you are A man-practice UNIX programmer often plays an educational newcomer or a role arguing with other factions, and you find that it is difficult to accurately express the benefits of using UNIX, then you should read this book.
You Should Read this Book if you are A C, C , or Java Programmer with Experience On Other Operating Systems and You Are About To Start a Unix-Based Project.
Translation: If you are a C, C , or Java programmers, there have been programming experience on other operating systems, but you should read this book when you start a UNIX-based project.
You should read this book if you are a Unix user with novice-level up to middle-level skills in the operating system, but little development experience, and want to learn how to design software effectively under Unix.
Translation: If you are a UNIX user, it is in the transition from the primary level of the operating system to the intermediate level, but the development experience is scarce, hoping how to efficiently design software in UNIX, then you should read this book.
You should read this book if you are a non-Unix programmer who has figured out that the Unix tradition might have something to teach you. We believe you're right, and that the Unix philosophy can be exported to other operating systems. So we Will Pay More Attention To Non-UNIX Environments (Especially Microsoft Operating Systems) Than IS Usual In a Unix Book; and when Tools and Case Studies Are Portable, We Say SO.
Translation: If you are a non-UNIX platform programmer, it is aware that UNIX tradition can give you some inspiration, you should read this book. We firmly believe that you are right, because UNIX philosophy can graft on other operating systems. Therefore, we will spend more attention to more attention to non-UNIX environments (especially Microsoft Microsoft operating systems); this is proved when tools and case study can be transplanted.
You should read this book if you are an application architect considering platforms or implementation strategies for a major general-market or vertical application. It will help you understand the strengths of Unix as a development platform, and of the Unix tradition of open source as a DEVELOPMENT METHOD. Translation: If you are an application software designer, it is considering platform issues, or a primary integrated market or vertical application implementation strategy, you should read this book. It allows you to appreciate the power of UNIX as a development platform, the power of the Unix tradition as a powerful driving force.
You should not read this book if what you are looking for is the details of C coding or how to use the Unix kernel API There are many good books on these topics;. Advanced Programming in the Unix Environment [Stevens92] is classic among explorations of The UNIX API, AND the Practice Of Programming [kernighan-Pike99] is Recommended Reading for All C Programmers (Indeed for All Programmers in Any Language).
Translation: If you are looking for readings written by C code or how to use UNIX core API, you don't have to read this book. There are many good books on this topic; Advanced Programming in the UNIX Environment [Stevens92] is a classic force in UNIX API exploration. We also want to recommend the Practice of Programming [kernighan-Pike99] to all C programmers (in fact, all programmers who use any language).
How to use this book
How to use this book
This book is both practical and philosophical Some parts are aphoristic and general, others will examine specific case studies in Unix development We will precede or follow general principles and aphorisms with examples that illustrate them:.. Examples drawn not from toy demonstration programs but rather from REAL WORKING CODE THAT IS in Use every day.
Translation: Practical and philosophical. Some portions have focused on the discussion of marsh and generalization, and other parts were investigated UNIX specific development cases. Before and after universal principles and motto, we will provide some examples to explain them: These examples are not taken from the actual work code that is running every day.
We have deliberately avoided filling the book with lots of code or specification-file examples, even though in many places this might have made it easier to write (and in some places perhaps easier to read!). Most books about programming give too many low -LEVEL DETAILS AND EXAMPLES, But Fail At Giving The Reader a High-Level Feel For What Really Going On. In this book, we prefer To Err in the oppositive Direction. Translation: We intend to avoid a lot of code and regulations in the book Document instance, although this way is relatively easy to write in many cases (perhaps it is easier to read in a certain place!) A large number of works on the program design are spent on the underlying detail and instances, but they can't make readers at a high level. Feel what is doing. We would rather make mistakes in the opposite direction.
THEFORE, WHILE WIOTEN BE Invited to Read Code and Specification Files, Relatively Few Are Actually Included In The Book. Instead, We Point You at Examples on The Web.
Translation: Therefore, although you are often invited to read code and standard documentation, this book is very small. But we will provide you with an example on the internet.
Absorbing these examples will help solidify the principles you learn into semi-instinctive working knowledge. Ideally, you should read this book near the console of a running Unix system, with a Web browser handy. Any Unix will do, but the software case studies are more likely to be preinstalled and immediately available for inspection on a Linux system. The pointers in the book are invitations to browse and experiment. Introduction of these pointers is paced so that wandering off to explore for a while will not break up exposition that has To Be Continuous.
Translation: The absorption example helps to consolidate the basic principles you have learned and convert them into semi-straight work knowledge. Ideally, you should read this book in front of a console running a UNIX system, but also prepare an internet browser. All UNIX is competing for our learning tasks, but software case study should be pre-loaded in the Linux system and available at any time. Tips in the book guide you to browse and experiment. The introduction of these tips is arranged (the translation: see the example list after the directory), you will not interrupt the continuous narrative of this book.
Note: while we have made every effort to cite URLs that should remain stable and usable, there is no way we can guarantee this If you find that a cited link has gone stale, use common sense and do a phrase search with your favorite Web. Reabed: Note: Although we spend a lot of energy to reference these should maintain stable and available URL links, we can't ensure this. If you find a reference to a dead link, use a common sense and use your favorite search engine to solve this problem through a phrase search.
.
Most abbreviations have been fully known for the first time. For convenience, we provide a vocabulary in the appendix.
References are us. Numbered FootNotes Are for Urls That Well Intrude on The Text OR That We Suspect Might Be PERISHABLE; Also for Asides, War Stories, And Jokes [2].
Translation: References are arranged in the author's name. Footnotes with numbers commented those URL links that will destroy the text, or those we suspect that may be outdated; or some hearsay, "Star Wars" story, Joke 2.
To make this book more accessible to less technical readers, we invited some non-programmers to read it and identify terms that seemed both obscure and necessary to the flow of exposition. We also use footnotes for definitions of elementary terms that an experienced programmer is unlikely TO NEED.
Translation: In order to make this book allow more non-technical readers to read, we invited some non-program development readers. We let them define those terms that seem to be embarrassing but elaboration in the future. We also use footnotes to define basic vocabulary, and the experienced programmers may not need them.
Related References
Related reference books (translation: currently published in the continent, with corresponding Chinese translation, easy to check, the rest of the original text.
. Some famous papers and a few books by Unix's early developers have mined this territory before Kernighan & Pike's The Unix Programming Environment [Kernighan-Pike84] stands out among these and is rightly considered a classic But today it shows its age a bit;. It Doesn't Cover The Internet, And The World Wide Web or The New Wave of Interpreted Languages Like Perl, Tcl, And Python.: Some early developers' famous papers and books have gathered in this field. Kernighan & Pike's The Unix Programming Environment ("UNIX Programming Environment") [Kernighan-Pike84] Hei Li Chicken Group, is honored as a classic. But now it is slightly old. This book does not discuss the Internet, World Wide Web or the new wave of the language like Perl, TCL, and Python.
About halfway into the composition of this book, we learned of Mike Gancarz's The Unix Philosophy [Gancarz]. This book is excellent within its range, but did not attempt to cover the full spectrum of topics we felt needed to be addressed. Nevertheless we are ..............
Translation: This book is about halfway, we read the Unix Philosophy [Gancarz] of Mike Gancarz. This book is quite well in its field, but not trying to discuss the type of topic we believe necessary. However, we still have to thank the authors to point out: those who seem to have an extremely simple Unix design model have always been the most lasting and successful.
The Pragmatic Programmer [Hunt-Thomas] is a witty and wise disquisition on good design practice pitched at a slightly different level of the software-design craft (more about coding, less about higher level partitioning of problems) than this book. The authors' Philosophy is an outgrowth of unix expender, and it is an excellent complement to this book.
Translation: The Pragmatic Programmer ("Programmer's Tao") [hunt-thomas] is a humble and wisdom. Unlike this book, it is more inclined to the software design process level (a lot of writing code, very little attention to the high level of problem). The author's philosophical concept increases with UNIX experience. It is a good auxiliary book. THE PRACTICE OF THE 99] COVERS Some of the Same Ground as The Pragmatic Programmer from a position deep within the unix tradition.
Translation: The Practice Of Programming [Kernighan-Pike99] is basically similar to the Pragmatic Programmer ("Programmer's Way"), but it is created from the status of deep into UNIX tradition.
Finally (and with admitted intent to provoke) we recommend Zen Flesh, Zen Bones [Reps-Senzaki], an important collection of Zen Buddhist primary sources. References to Zen are scattered throughout this book. They are included because Zen provides a vocabulary for addressing some ideas that turn out to be very important for software design but are otherwise very difficult to hold in the mind. Readers with religious attachments are invited to consider Zen not as a religion but as a therapeutic form of mental discipline-which, in its purest Non-theistic forms, is exactly what zen is.
Translation: Finally (with irritable incitement), we recommend Zen Flesh, Zen Bones [REPS-SENZAKI], an important work about Zen's origin. Zen quote spreads in the book. It contains it because Zen provides a vocabulary, which can express some concepts in software design. If this is not the case, these concepts are difficult to stay in your mind. Readers with religious backgrounds please don't think of Zen as a belief, it is a mental training method. This purehe theory is also the "Zen".
Conventions Used in this BOOK
This book is agreed
The term "UNIX" is technically and legally a trademark of The Open Group, and should formally be used only for operating systems which are certified to have passed The Open Group's elaborate standards-conformance tests. In this book we use "Unix" in the looser sense widely current among programmers, to refer to any operating system (whether formally Unix-branded or not) that is either genetically descended from Bell Labs's ancestral Unix code or written in close imitation of its descendants. in particular, Linux (from which we Draw Most Our Examples) IS A Unix Under this Definition. Translation: The term "UNIX" is technically and legally registered trademarks of Open Group. Only those operating systems that pass the Open Group's refinement standard consistency test are only allowed to be officially used. In this book, we use the more relaxed meaning of "UNIX" in programmers to refer to any original UNIX code directly inherited from Bell Lab, or the way to be very similar to its progeny. Written operating system (regardless of whether it is formally available to UNIX). In particular, Linux (we have drawn most of it from it) is a UNIX under this definition.
This book employs the Unix manual page convention of tagging Unix facilities with a following manual section in parentheses, usually on first introduction when we want to emphasize that this is a Unix command. Thus, for example, read "munger (1)" as " the 'munger' program, which will be documented in section 1 (user tools) of the Unix manual pages, if it's present on your system. "Section 2 is C system calls, section 3 is C library calls, section 5 is file formats and protocols, section 8 is system administration tools. Other sections vary among Unixes but are not cited in this book. For more, type man 1 man at your Unix shell prompt (older System V Unixes may require man -s 1 man).
Translation: This book uses the marker in the UNIX manual, that is, in the parentheses of the UNIX function, the number of the number of the manual is indicated, usually in the first introduction, we want to emphasize this is a UNIX command. Therefore, for example, "MUNGER (1)" read "" "" "Munger 'program, the document should be in the first section of the UNIX manual (user tool), if you have this program," Section 2 is C System call, the third quarter is the C library call, and the fifth section is the file format and protocol, and the Section 8 is the system management tool. The remaining chapters are different from UNIX, and this book does not bring them. To learn more, type Man L Man under your UNIX Shell (Old System V UNIX may need to use Man-S L Man). Sometimes we mention a Unix application (such as Emacs, without a manual-section suffix and capitalized. This is a clue that the name actually represents a well-established family of Unix with essentially the same function, and we are discussing generic properties of all Of Them. Emacs, for Example, Includes Xemacs.
Translation: Sometimes we mention a UNIX application (for example, Emacs), there is no manual section and uppercase representation. This usually implies this name representing a long-lived UNIX program family, essentially the same function, and we are discussing their common attributes. For example, Emacs includes XEMACS.
Our Case Studies
Our case study
cdrtools / xcdroast These two separate projects are usually used together The cdrtools package is a set of CLI tools for writing CD-ROMs;.. Web search for "cdrtools" The xcdroast application is a GUI front end for cdrtools; see the xcdroast project site [http://www.xcdroast.org/].
Translation: CDRTools / XcDroast These two independently developed projects are usually used in one. The CDRTools package is a collection of CLI tools for burning CD-ROMs. The web keyword is "cdrtools". XcDroast is a CDRTools graphical user interface application; the URL of the XCDroast project is [http://www.xcdroast.org/].
fetchmail The fetchmail program retrieves mail from remote-mail servers using the POP3 or IMAP post-office protocols. See the fetchmail home page [http://www.catb.org/~esr/fetchmail] (or search for "fetchmail" on The Web).
Translation: The Fetchmail Fetchmail program Gets email from the remote mail server via the POP3 or IMAP post office protocol. Fetchmail Home Address: [http://www.catb.org/~esr/fetchmail] (or in the web search "fetchmail") GIMP the GIMP (GNU Image Manipulation Program) is a full-featured Paint, Draw, And Image Manipulation Program That Can Edit A HUGE VARIETY OF GRAPHICAL FORMATS in Sophistated Ways. Sources Are Available from The Gimp Home Page [http://www.gimp.org/] (or search for "GIMP" on the web).
Translation: GIMP GIMP (GNU Image Processor) is a drawing, drawing, and graphics handler that can edit a variety of graphics formats in an accurate manner. Can you get the original code from the GIMP home page [http://www.gimp.org/] (or search "gimp" in Wen)
Author's Acknowledgements
Author acknowledgments
The guest contributors (Ken Arnold, Steven M. Bellovin, Stuart Feldman, Jim Gettys, Steve Johnson, Brian Kernighan, David Korn, Mike Lesk, Doug McIlroy, Marshall Kirk McKusick, Keith Packard, Henry Spencer, and Ken Thompson) added a great deal of value to this book. Doug McIlroy, in particular, went far beyond the call of duty in the thoroughness of his critique and the depth of his contributions, displaying the same care and dedication to excellence which he brought to managing the original Unix research Group thirty years ago.
Translation: guest contributors are (Ken Arnold, Steven M. Bellovin, Stuart Feldman, Jim Gettys, Steve Johnson, Brian Kernighan, David Korn, Mike Lesk, Doug McIlroy, Marshall Kirk McKusick, Keith Packard, Henry Spencer, and Ken Thompson ) Add great value to this book. Especially Doug Mcilroy, he has greatly exceeded his obligation in the depth of the rigidity and contribution to the comment, showing the same concerns when he is the initial UNIX research group in the early days ago, and pursues excellence What contribution is made.
Special thanks go to Rob Landley and to my wife Catherine Raymond, both of whom delivered intensive line-by-line critiques of manuscript drafts. Rob's insightful and attentive commentary actually inspired more than one entire chapter in the final manuscript, and he had a lot to do with its present organization and range; if he had written all the text he pushed me to improve, I would have to call him a co-author Cathy was my test audience representing non-technical readers;. to the extent this book is Accessible to People Who Aren't Alleady Programmers, That's Largely Her doing. Translation: I would like to thank my wife Catherine raymond, and both of them conduct finely evaluated the original. Rob's insight and thoughtful annotations have contributed to the content of a full manuscript in the final manuscript. He also made considerable work for the structure of this book. If he records those words that encourage me constantly improve, I should call him as a partner. Cathy represents non-technical background readers to participate in trial. This book can make those non-programmed staff accept, in a large extent, they are attributed to her.
This book benefited from discussions with many other people over the five years it took me to write it. Mark M. Miller helped me achieve enlightenment about threads. John Cowan supplied some insights about interface design patterns and drafted the case studies of wily and VM / CMS, and Jef Raskin showed me where the Rule of Least Surprise comes from. The UIUC System Architecture Group contributed useful feedback on early chapters. The sections on What Unix Gets Wrong and Flexibility in Depth were directly inspired by their review. Russell J. Nelson contributed the material on Bernstein chaining in Chapter 7. Jay Maynard contributed most of the material in the MVS case study in Chapter 3. Les Hatton provided many helpful comments on the Languages chapter and motivated the portion of Chapter 4 on Optimal Module Size. David A Surve Cox Helped Develop The Survey of Plan 9. Dennis Rusts IE Corrected Me On Some Historical Points About C. Translation: This book benefits from the mutual discussion of these five-year book time. Mark M. Miller gives me a lot of inspiration in threads. John Cowan provides me some in-depth insights in interface design modes and drafted Wily and VM / CMS case study. Jef raskin indicates the source of "least amazing principles". The UIUC system architecture group provides a useful feedback in the previous chapter. Their review directly contributed to the generation of "What errors made by Unix" and "in-depth exploration scalability". Russell J. Nelson provides materials for the Bernstein chain in Chapter VI. Jay MayNard has provided most of the materials for the MVS case in Chapter 3. Les hatton gave the "Language" This chapter is a very helpful comment, and promotes the completion of the fourth chapter "Optimized Mode Specifications". David A. Wheeler contributed many micro-criticisms, as well as some cases of analytics. Especially about the design part. Russ Cox assists in the "Plan 9" survey. Dennis Ritchie corrected the mistakes I made in some C language history.
Hundreds of Unix programmers, far too many to list here, contributed advice and comments during the book's public review period between January and June of 2003. As always, I found the process of open peer review over the Web both intensely challenging and intensely rewarding. Also as always, responibility for any errors in the resulting work remains my own. Translation: Because it is too many and cannot be listed in public review (January to June 2003) Suggestions and comments. I can always find that under the public supervision of the Internet, fierce challenges and enthusiastic rewards and rooms. As always, I still take the responsibility of modifying this book any mistake.
The expository style and some of the concerns of this book have been influenced by the design patterns movement; indeed, I flirted with the idea of titling the book Unix Design Patterns I did not, because I disagree with some of the implicit central dogmas. of the movement and do not feel the need to use all its formal apparatus or accept its cultural baggage. nevertheless, my approach has certainly been influenced by Christopher Alexander's work [3] (especially The Timeless Way of Building and A Pattern Language), and I owe the Gang of Four and other members of their school a large debt of gratitude for showing me how it is possible to use Alexander's insights to talk about software design at a high level without merely uttering vague and useless generalities. Interested readers should see Design Patterns: Elements of Reusable Object-Oriented Software [Gangoffour] for an Introduction to Design Patterns.
Translation: Some of the ideas in style and books have been influenced by design mode movement; in fact, I will change this book to Unix Design Patterns ("UNIX Design Mode"). But I didn't do this, because I didn't agree with the blind center dogmatization exposed in this movement, and I didn't want to use the formal equipment of the design model while receiving its cultural burden. However, my technique is inevitably affected by Christopher Alexander (especially the Timeless Way of Building ("The Eternal Way of Architecture") and a Pattern Language ("Building Mode Language)) I owe it. Gang of Four and the other members of this school have a lot of gratitude, which they show me how to use Alexander in-depth views to discuss software design at high levels, and there is no whit vague and empty. Interested readers can refer to Design Patterns: Elements of Reusable Object-Oriented Software ("Design Mode: Accessible Object - Oriented Software Basics") The Title of this Book IS, Of Course, a Reference To Donald Knuth's The Art of Computer . Programming While not specifically associated with the Unix tradition, Knuth has been an influence on us all Editors with vision and imagination are not as common as they should be Mark Taub is one;.. he saw merit in a stalled project and skillfully nudged me into finishing it. Copy editors with a good ear for prose style and enough ability to improve writing that is not like theirs are even less common, but Mary Lou Nohr makes that grade. Jerry Votta seized on my concept for the cover and made it look better than I had imagined. The whole crew at Prentice-Hall gets high marks for making the editorial and production process as painless as possible, and for cheerfully accommodating my control-freak tendencies not just over the text but deep into the details of The Book's Visual Design, Art, And Marketing.
Translation: Sir, this book title is taken with reference to Donald Knuth's ART of Computer Programming ("Computer Programming Art"). Knuth although there is no special connection with UNIX tradition, he affects all of us. The editing of vision and imagination is very common. Mark Taub is one of them; he insights a stranded project, then convince me to complete it. There is a keen hearing on the prose style, and it is good at modifying those responsible editing with their style. Different articles, but Mary Lou Nohr meets this level. Jerry Votta grasped my concept in the cover, it is much better than I originally imagined. All employees of Prentice-Hall have left a deep impression, because they tried to make the editorial and publishing process as smooth as possible, and very happy to accept me not only put into text, but even went deep into the book's visual design, art , "Manipulate" tendency in the details of the market. Chapter 1. Philosophy
Chapter 1, Philosophy
Philosophy Matters
Philosophical problem
Those Who Do Not Und Unix Are Condemned To Reinvent It, Poorly.
-
Translation: People who don't understand Unix will be punished to the inventive one.
Usenet signature, november 1987
Culture? What creted?
Translation: Culture? What kind of culture ??
This Is A Book About Unix Programming, But in It We're Going to Toss Around The Words 'Culture', 'Art', And 'Philosophy' a Lot. If You Are Not a Programmer, or You Are A Program WHO HAS HAD little contact with the Unix world, this may seem strange But UNIX has a culture;. it has a distinctive art of programming;. and it carries with it a powerful design philosophy Understanding these traditions will help you build better software, even if you ' Re Developing for a Non-UNIX Platform.
Translation: This is a book about UNIX programming, but we will focus on "culture", "art" and "philosophy". If you are not a programmer, or just a program designer, you have a fresh contact with UNIX program, then the subject of this book may be very unfamiliar. But UNIX has its own culture, and its programming has a unique art; and it also contains a strong design idea's philosophical concept. Understand these traditions, even if you are designing a non-UNIX platform, you will have a better software to design better.
Every branch of engineering and design has technical cultures. In most kinds of engineering, the unwritten traditions of the field are parts of a working practitioner's education as important as (and, as experience grows, often more important than) the official handbooks and textbooks. Translation: Each branch discipline of engineering and design has its own technical culture. In most engineering, unwritten industry traditions and formal manuals are equivalent to textbooks (and will be more important as experience growth). They all belong to part of the programmer's cultivation.
Senior Engineers Develop Hue Bodies of Implicit Knowledge, Which The Pass To Their Juniors BY (As Zen Buddhists Put It) "a Special Transmission, Outside The Scriptures".
The senior engineer creates a lot of implicit knowledge, and then "a special way to pass the way-non-library method" like a Zen religion, "the" special way - non-library mode "will give knowledge to the lively engineers.
Software engineering is generally an exception to this rule; technology has changed so rapidly, software environments have come and gone so quickly, that technical cultures have been weak and ephemeral There are, however, exceptions to this exception A very few software technologies have.. Proved Durable Enough To Evolve Strong Technical Cultures, DistINcTive Arts, And An Associated Design Philosophy Transmitted Across Generations of Engineers.
Translation: Software Engineering is usually an exception to this rule; because technology and software environment updates are too fast to become fragile and short. However, there are exceptions in exceptions. Some very few software projects have proven to have sufficient durability, forming a strong technical culture, specific art form and the design philosophy with the links, and develops by teaching a generation of engineers.
The UNIX culture is one of these The Internet culture is another -.. Or, in the twenty-first century, arguably the same one The two have grown increasingly difficult to separate since the early 1980s, and in this book we will not try Particularly hard.
Translation: UNIX culture is one of the above cultures. Internet culture is another kind - or in the 21st century, it is the same. These two cultures have become more difficult to distinguish between the 1980s, and in this book, we don't plan how to distinguish them.
The durability of unix
Translation: UNIX's persistence force
UNIX was born in 1969 and has been in continuous production use ever since That's several geologic eras by computer-industry standards -.. Older than the PC or workstations or microprocessors or even video display terminals, and contemporaneous with the first semiconductor memories Of all production timesharing systems today, only IBM's VM / CMS can claim to have existed longer, and Unix machines have provided hundreds of thousands of times more service hours; indeed, Unix has probably supported more computing than all other timesharing systems put together translation:. Unix was born In 1969, it has been continued as a product application. According to computer industry standards, UNIX spans several "geological" era, which is far away from personal computers, workstations, and microprocessors and even video display terminals. UNIX actually with the first semiconductor memory is the same era. In today's all-time system products, only IBM's VM / CMS can claim ourselves longer; and the UNIX machine has provided more than 100 more services; in fact, UNIX provides More calculated than other time-time systems.
UNIX has found use on a wider variety of machines than any other operating system can claim. From supercomputers to handhelds and embedded networking hardware, through workstations and servers and PCs and minicomputers, UNIX has probably seen more architectures and more odd hardware than any three other Operating systems combined.
Translation: UNIX usage is a wide range of fields than other operating systems. From supercomputers to laptops to embedded network hardware, across servers, workstations, personal computers, and miniature machines, Unix add more than other architectures and specific hardware seen by other three types of operating systems.
UNIX has supported a mind-bogglingly wide spectrum of uses. No other operating system has shone simultaneously as a research vehicle, a friendly host for technical custom applications, a platform for commercial-off-the-shelf business software, and a vital component technology of the internet.
Translation: UNIX is also applied to many unimaginable areas. Which system can be used as a research tool, ... a friendly interface technology application, a platform of a counter external trading software, an important technology for an Internet?
Confident predictions that UNIX would wither away, or be crowded out by other operating systems, have been made yearly since its infancy. And yet UNIX, in its present-day avatars as Linux and BSD and Solaris and MacOS X and half a dozen other variants Seem Stronger Than Ever Today.Dessed Analysis Prediction Think that UNIX is not gradually dying, is extruded by other operating systems. Since UNIX is born, these 微辞 预 预 will continue to have a year. However, today's avatars such as Linux, BSD, Solaris, Macos X and several other variant products, they seem to be unprecedented.
Robert Metcalf [the inventor of Ethernet] says that if something comes along to replace Ethernet, it will be called "Ethernet", so therefore Ethernet will never die [4] .Unix has already undergone several such transformations.
Translation: Robert Metcalf (Ethernet inventor) said that if there is something instead of Ethernet, then it should still be called "Ethernet", so Ethernet will never disappear. Unix has experienced several such changes.
At least one of Unix's central technologies - the C language - has been widely naturalized elsewhere Indeed it is now hard to imagine doing software engineering without C as a ubiquitous common language of systems programming Unix also introduced both the now-ubiquitous tree shaped file.. Namespace with Directory Nodes and The Pipeline for Connecting Program.
Translation: A core technology of at least UNIX-C language - has been widely transplanted to other fields. In fact, it is difficult to imagine that there is now a common system programming language that is not as popular as the C language, and the software project will become. UNIX also introduced the piping of a tree file name space and program that is popular with a directory node.
.. UNIX's durability and adaptability have been nothing short of astonishing Other technologies have come and gone like mayflies Machines have increased a thousand fold in power, languages have mutated, industry practice has gone through multiple revolutions - and Unix hangs in there, still producing, STILL PAYING THE BILLS, AND STILL Commanding Loyalty from Many of The Best and Brightest Software Technologists on The Planet. translation: UNIX has been surprised. Other techniques are like a rush, and die. The power of the machine has a thousand times, the language has changed, and the industry has also experienced a variety of changes - UX is standing in it, still producing, still paying bills, still requires the most wisdom of this Planet to be loyal.
One of the many consequences of the exponential power-versus-time curve in computing, and the corresponding pace of software development, is that 50% of what one knows becomes obsolete over every 18 months. Unix does not abolish this phenomenon, but does do . a good job of containing it There's a bedrock of unchanging basics-languages, system calls, and tool invocations-that one can actually keep using for years, even decades Elsewhere it is impossible to predict what will be stable;. even entire operating systems cycle out of use. Under Unix, there is a fairly sharp distinction between transient knowledge and lasting knowledge, and one can know ahead of time (with about 90% certainty) which category something is likely to fall in when one learns it. Thus the Loyalty UNIX Commands.
Translation: In the calculation field, the energy-leveling energy growth is the time curve, and one of the corresponding software development, one of the effects is that a person's knowledge is eliminated 50% every 18 months. Unix cannot eliminate this phenomenon, but a good job to accommodate it. A unchanging cornerstone-language, system calls, and tools, - these things can always be used for several years or even for decades. If you do not, it is impossible to predict which part can remain stable, and even the entire operating system will be eliminated in the loop. In UNIX environments, there is a relatively obvious difference between short-term knowledge and continuous knowledge, and when we learn, you can know (about 90% of the grasp) which may be outdated. It can be said that UNIX ruled loyalty.
Much of Unix's stability and success has to be attributed to its inherent strengths, to design decisions Ken Thompson, Dennis Ritchie, Brian Kernighan, Doug McIlroy, Rob Pike and other early Unix developers made back at the beginning; decisions that have been proven sound over and over. But just as much is due to the design philosophy, art of programming, and technical culture that grew up around UNIX in the early days. This tradition has continuously and successfully propagated itself in symbiosis with UNIX ever since.
Translation: The large part of UNIX is attributed to its own inheritance power, attributed to Ken Thompson, Dennis Ritchie, Brian Kernighan, Doug Mcilroy, Rob Pike, and other UNIX early developers, after repeated argument More secure design decisions. At the same time, it is also necessary to pay attention to design philosophy, programming skills, and early technical culture that is gradually formed in UNIX. Since then, this tradition has been successfully proliferated with a complementary relationship with Unix.
[1] The three and a half decades between 1969 and 2003 is a long time. Going by the historical trend curve in number of Unix sites during that period, probably somewhere upwards of fifty million man-years have been plowed into Unix development worldwide.
Translation: 1969 to 2003 It is really a long. According to the historical trend curve of the number of UNIX sites that period, there are about 5 million people around the world to devote themselves on UNIX development.
[2] This Particular Footnote is Dedicated to Terry Pratcher, Whose Use of Footnotes IS Quite ... Inspiring.
Translation: This special footnote is dedicated to Terry Pratchett, and his footnote is really. . . It is encouraging.
[3] An Appreciation of Alexander's Work, with links to on-line Versions of Significant Portions, May Be found at some Notes on Christopher Alexander [http://www.math.utsa.edu/sphere/salingar/chris.text. HTML].
Translation: Appreciation of Alexander Works, as well as online version of some important content, available in the "Some Notes On Christopher Alexander" website [http://www.math.utris.edu/sphere/salingar/chris.text.html] turn up.
[4] In fact, Ethernet has already been replaced by a different technology with the same name - twice Once when coax was replaced with twisted pair, and a second time when gigabit Ethernet came in translation: in fact, Ethernet has been Different technologies have been iteted twice, although the name is the same. The first time was replaced with a twisted pair, and the second time was a change in the introduction of the Gigabit NIC.