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!
=== ''Program Design in the UNIX Environment'' === [[File:Brian Kernighan in 2012 at Bell Labs 2.jpg|thumb|[[Brian Kernighan]] has written at length about the Unix philosophy]] In October 1984, Brian Kernighan and Rob Pike published a paper called ''Program Design in the UNIX Environment''. In this paper, they criticize the accretion of program options and features found in some newer Unix systems such as [[4.2BSD]] and [[System V]], and explain the Unix philosophy of software tools, each performing one general function:<ref name="design1984">{{cite journal |title=Program Design in the UNIX Environment |author1=Rob Pike |author2=Brian W. Kernighan |date=October 1984 |url=https://harmful.cat-v.org/cat-v/unix_prog_design.pdf |journal=AT&T Bell Laboratories Technical Journal |volume=63 |issue=8 |at=part 2 |access-date=December 15, 2022}}</ref> {{quote|Much of the power of the UNIX operating system comes from a style of program design that makes programs easy to use and, more important, easy to combine with other programs. This style has been called the use of ''software tools'', and depends more on how the programs fit into the programming environment and how they can be used with other programs than on how they are designed internally. [...] This style was based on the use of ''tools'': using programs separately or in combination to get a job done, rather than doing it by hand, by monolithic self-sufficient subsystems, or by special-purpose, one-time programs.}} The authors contrast Unix tools such as {{mono|[[cat (Unix)|cat]]}} with larger program suites used by other systems.<ref name="design1984" /> {{quote|The design of {{mono|cat}} is typical of most UNIX programs: it implements one simple but general function that can be used in many different applications (including many not envisioned by the original author). Other commands are used for other functions. For example, there are separate commands for file system tasks like renaming files, deleting them, or telling how big they are. Other systems instead lump these into a single "file system" command with an internal structure and command language of its own. (The [[Peripheral Interchange Program|PIP]] file copy program<ref>{{cite web |url=http://www.tramm.li/i8080/cpm22-m.pdf |title=CP/M Operating System Manual|date=1983 }}</ref> found on operating systems like [[CP/M]] or [[RSX-11]] is an example.) That approach is not necessarily worse or better, but it is certainly against the UNIX philosophy.}}
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)