# HG changeset patch # User meillo@marmaro.de # Date 1270761088 -7200 # Node ID 422679bdf384e88255c15f3b9d17ce5e6f5f489e # Parent c87143793d82f0dc2bd71e8c9872ea80d2869112 rework in ch01 diff -r c87143793d82 -r 422679bdf384 unix-phil.ms --- a/unix-phil.ms Thu Apr 08 16:47:11 2010 +0200 +++ b/unix-phil.ms Thu Apr 08 23:11:28 2010 +0200 @@ -49,30 +49,27 @@ .NH 1 Introduction .LP -Building a software is a process from an idea of the purpose of the software -to its release. -No matter \fIhow\fP the process is run, two things are common: -the initial idea and the release. -The process in between can be of any shape. -The the maintenance work after the release is ignored for the moment. +The Unix Philosophy is the essence of how the Unix operating system, +especially its toolchest, was designed. +It is no limited set of fixed rules, +but a loose set of guidelines which tell how to write software that +suites well into Unix. +Actually, the Unix Philosophy describes what is common to typical Unix software. +The Wikipedia has an accurate definition: +.[ +%A Wikipedia +%T Unix philosophy +%P Wikipedia, The Free Encyclopedia +%D 2010-03-21 17:20 UTC +%O .CW \s-1http://en.wikipedia.org/w/index.php?title=Unix_philosophy&oldid=351189719 +.] +.QP +The \fIUnix philosophy\fP is a set of cultural norms and philosophical +approaches to developing software based on the experience of leading +developers of the Unix operating system. .PP -The process of building splits mainly in two parts: -the planning of what and how to build, and implementing the plan by writing code. -This paper focuses on the planning part \(en the designing of the software. -.PP -Software design is the plan of how the internals and externals of the software should look like, -based on the requirements. -This paper discusses the recommendations of the Unix Philosophy about software design. -.PP -The here discussed ideas can get applied by any development process. -The Unix Philosophy does recommend how the software development process should look like, -but this shall not be of matter here. -Similar, the question of how to write the code is out of focus. -.PP -The name ``Unix Philosophy'' was already mentioned several times, but it was not explained yet. -The Unix Philosophy is the essence of how the Unix operating system and its toolchest was designed. -It is no limited set of rules, but what people see to be common to typical Unix software. -Several people stated their view on the Unix Philosophy. +As there is no single definition of the Unix Philosophy, +several people have stated their view on what it comprises. Best known are: .IP \(bu Doug McIlroy's summary: ``Write programs that do one thing and do it well.'' @@ -106,12 +103,24 @@ .] .LP These different views on the Unix Philosophy have much in common. -Especially, the main concepts are similar for all of them. -But there are also points on which they differ. -This only underlines what the Unix Philosophy is: -A retrospective view on the main concepts of Unix software; -especially those that were successful and unique to Unix. -.\" really? +Especially, the main concepts are similar in all of them. +McIlroy's definition can surely be called the core of the Unix Philosophy, +but the fundamental idea behind it all, is ``small is beautiful''. + +.PP +The Unix Philosophy tells how to design and write good software for Unix. +Many concepts described here base on facilities of Unix. +Other operating systems may not offer such facilities, +hence it may not be possible to design software is the way of the Unix Philosophy. + +FIXME + +This paper discusses the recommendations of the Unix Philosophy about software design. +.PP +The here discussed ideas can get applied by any development process. +The Unix Philosophy does recommend how the software development process should look like, +but this shall not be of matter here. +Similar, the question of how to write the code is out of focus. .PP Before we will have a look at concrete concepts, we discuss why software design is important @@ -121,8 +130,8 @@ .NH 1 Importance of software design in general .LP -The design of a software describes its internal and external shape, -meaning structure and interfaces. +Software design is the planning of how the internal structure +and external interfaces of a software should look like. It has nothing to do with visual appearance. If we take a program as a car, then its color is of no matter. Its design would be the car's size, its shape, the locations of doors,