Skip to content
Search

Unix philosophy

lastmod 2022-10-07created 2022-10-073 edits

The Unix philosophy, originated by Ken Thompson, is a set of cultural norms and a philosophical approach to minimalist, modular software development. It is based on the experience of leading developers of the Unix operating system.

For the early Unix developers, it was important to bring the concepts of modularity and reusability, which had spread the software tools movement, into the field of software engineering. Over time, the leading developers of Unix and programs for Unix established a set of cultural norms for software development, and these norms became as important and influential as the Unix technology itself. This is called the Unix philosophy.

The Unix philosophy emphasizes simple, short, clear, modular, and extensible code that developers can easily maintain. The Unix philosophy pursues a stable state that contrasts with monolithic design.

Contents

  • Make each program do one thing well. To do a new job, build afresh rather than complicate old programs by adding new features.
  • Expect the output of every program to become the input to another, as yet unknown, program. Don't clutter output with extraneous information. Avoid stringently columnar or binary input formats. Don't insist on interactive input.
  • Design and build software to be tried early, ideally within weeks, even an operating system. Don't hesitate to throw away the clumsy parts and rebuild them.
  • Use tools in preference to unskilled help to lighten a programming task, even if you have to detour to build the tools and expect to throw some of them out right after.

See also

Favorite site

author Zer0 sitemap