The Art of Unix Programming - Eric S. Raymond Date: 2022-04-20 | Rule of Modularity: Write simple parts connected by clean interfaces. | As Brian Kernighan once observed, “Controlling complexity is the | essence of computer programming” [Kernighan-Plauger]. Debugging | dominates development time, and getting a working system out the | door is usually less a result of brilliant design than it is of | managing not to trip over your own feet too many times. Assemblers, | compilers, flowcharting, procedural programming, structured | programming, “artificial intelligence”, fourth-generation | languages, object orientation, and software-development | methodologies without number have been touted and sold as a cure | for this problem. All have failed as cures, if only because they | ‘succeeded’ by escalating the normal level of program complexity | to the point where (once again) human brains could barely cope. As | Fred Brooks famously observed [Brooks], there is no silver bullet. | The only way to write complex software that won't fall on its face | is to hold its global complexity down — to build it out of simple | parts connected by well-defined interfaces, so that most problems | are local and you can have some hope of upgrading a part without | breaking the whole Chapter: Basics of the Unix Philosophy Date: 2022-04-20 | Because maintenance is so important and so expensive, write programs | as if the most important communication they do is not to the computer | that executes them but to the human beings who will read and maintain | the source code in the future (including yourself Chapter: Basics of the Unix Philosophy Date: 2022-04-20 | Unix tradition strongly encourages writing programs that read | and write simple, textual, stream-oriented, device-independent | formats. Under classic Unix, as many programs as possible are | written as simple filters, which take a simple text stream on input | and process Chapter: Basics of the Unix Philosophy