Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Unix philosophy
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
== Origin == The Unix philosophy is documented by [[Doug McIlroy]]<ref name=taoup-ch1s6>{{cite book |first=Eric S. |last=Raymond |title=The Art of Unix Programming |year=2004 |section=Basics of the Unix Philosophy |section-url=http://www.catb.org/~esr/writings/taoup/html/ch01s06.html |url=http://www.catb.org/~esr/writings/taoup/html/ |publication-date=2003-09-23 |publisher=Addison-Wesley Professional |isbn=0-13-142901-9 |author-link=Eric S. Raymond |access-date=2016-11-01}}</ref> in the [[Bell System Technical Journal]] from 1978:<ref>{{cite journal|url=https://archive.org/details/bstj57-6-1899/mode/2up|title=Unix Time-Sharing System: Foreword|author1=[[Doug McIlroy]] |author2=E. N. Pinson |author3=B. A. Tague|publisher=Bell Laboratories|journal=The Bell System Technical Journal|date=8 July 1978|pages=1902β1903}}</ref> # 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, even operating systems, to be tried early, ideally within weeks. 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 after you've finished using them. It was later summarized by [[Peter H. Salus]] in A Quarter-Century of Unix (1994):<ref name=taoup-ch1s6 /> * Write programs that do one thing and do it well. * Write programs to work together. * Write programs to handle text streams, because that is a universal interface. In their Unix paper of 1974, Ritchie and Thompson quote the following design considerations:<ref>{{citation | author1=[[Dennis Ritchie]] | author2=[[Ken Thompson]] | title=The UNIX time-sharing system | journal=[[Communications of the ACM]] | volume=17 | issue=7 | year=1974 | pages=365β375 | url=https://people.eecs.berkeley.edu/~brewer/cs262/unix.pdf | doi=10.1145/361011.361061| s2cid=53235982 }}</ref> * Make it easy to write, test, and run programs. * Interactive use instead of [[batch processing]]. * [[Frugality|Economy]] and [[elegance]] of design due to size constraints ("salvation through suffering"). * [[Self supporting|Self-supporting]] system: all Unix software is maintained under Unix.
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)