Reviewing today’s emergency patch file
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 how they can be used with other programs than on how they are designed internally. But as the system has become commercially successful and has spread widely, this style has often been compromised, to the detriment of all users. Old programs have become encrusted with dubious features. Newer programs are not always written with attention to proper separation of function and design for interconnection. This paper discusses the elements of program design, showing by example good and bad design, and indicates some possible trends for the future.
There is much to learn from UNIX, both the failures and successes. In particular this paper argues for small well defined functions which can be composed to build larger functionality, and against a slow and steady bloat of features — as Perlis said “If you have a procedure with 10 parameters, you probably missed some.”