*** Welcome to piglix ***

Unix philosophy


The Unix philosophy, originated by Ken Thompson, is a set of cultural norms and philosophical approaches to minimalist, modular software development. It is based on the experience of leading developers of the Unix operating system. Early Unix developers were important in bringing the concepts of modularity and reusability into software engineering practice, spawning a "software tools" movement. Over time, the leading developers of Unix (and programs that ran on it) established a set of cultural norms for developing software, norms which became as important and influential as the technology of Unix itself; this has been termed the "Unix philosophy."

The Unix philosophy emphasizes building simple, short, clear, modular, and extensible code that can be easily maintained and repurposed by developers other than its creators. The Unix philosophy favors composability as opposed to monolithic design.

The UNIX philosophy is documented by Doug McIlroy in the The Bell System Technical Journal from 1978:

Later summarized by Peter H. Salus in A Quarter-Century of Unix (1994): This is the Unix philosophy:

In the book The Pragmatic Programmer: From Journeyman to Master the authors mention the philosophy of combining "small, sharp tools" and the use of "common underlying format—the line-oriented, plain text file" to accomplish larger tasks.

The whole philosophy of UNIX seems to stay out of assembler.

The development of pipes in 1973 formalized the existing principle of stdin-stdout into a philosophy in Version 3 Unix, with older software rewritten to comply. Previously visible in early utilities such as wc, cat, and uniq, McIlroy cites Thompson's grep as what "ingrained the tools outlook irrevocably" in the operating system, with later tools like tr, m4, and sed imitating how grep transforms the input stream.


...
Wikipedia

...