docs/unix-phil

changeset 40:422679bdf384

rework in ch01
author meillo@marmaro.de
date Thu, 08 Apr 2010 23:11:28 +0200
parents c87143793d82
children 13ef7042fa28
files unix-phil.ms
diffstat 1 files changed, 40 insertions(+), 31 deletions(-) [+]
line diff
     1.1 --- a/unix-phil.ms	Thu Apr 08 16:47:11 2010 +0200
     1.2 +++ b/unix-phil.ms	Thu Apr 08 23:11:28 2010 +0200
     1.3 @@ -49,30 +49,27 @@
     1.4  .NH 1
     1.5  Introduction
     1.6  .LP
     1.7 -Building a software is a process from an idea of the purpose of the software
     1.8 -to its release.
     1.9 -No matter \fIhow\fP the process is run, two things are common:
    1.10 -the initial idea and the release.
    1.11 -The process in between can be of any shape.
    1.12 -The the maintenance work after the release is ignored for the moment.
    1.13 +The Unix Philosophy is the essence of how the Unix operating system,
    1.14 +especially its toolchest, was designed.
    1.15 +It is no limited set of fixed rules,
    1.16 +but a loose set of guidelines which tell how to write software that
    1.17 +suites well into Unix.
    1.18 +Actually, the Unix Philosophy describes what is common to typical Unix software.
    1.19 +The Wikipedia has an accurate definition:
    1.20 +.[
    1.21 +%A Wikipedia
    1.22 +%T Unix philosophy
    1.23 +%P Wikipedia, The Free Encyclopedia
    1.24 +%D 2010-03-21 17:20 UTC
    1.25 +%O .CW \s-1http://en.wikipedia.org/w/index.php?title=Unix_philosophy&oldid=351189719
    1.26 +.]
    1.27 +.QP
    1.28 +The \fIUnix philosophy\fP is a set of cultural norms and philosophical
    1.29 +approaches to developing software based on the experience of leading
    1.30 +developers of the Unix operating system.
    1.31  .PP
    1.32 -The process of building splits mainly in two parts:
    1.33 -the planning of what and how to build, and implementing the plan by writing code.
    1.34 -This paper focuses on the planning part \(en the designing of the software.
    1.35 -.PP
    1.36 -Software design is the plan of how the internals and externals of the software should look like,
    1.37 -based on the requirements.
    1.38 -This paper discusses the recommendations of the Unix Philosophy about software design.
    1.39 -.PP
    1.40 -The here discussed ideas can get applied by any development process.
    1.41 -The Unix Philosophy does recommend how the software development process should look like,
    1.42 -but this shall not be of matter here.
    1.43 -Similar, the question of how to write the code is out of focus.
    1.44 -.PP
    1.45 -The name ``Unix Philosophy'' was already mentioned several times, but it was not explained yet.
    1.46 -The Unix Philosophy is the essence of how the Unix operating system and its toolchest was designed.
    1.47 -It is no limited set of rules, but what people see to be common to typical Unix software.
    1.48 -Several people stated their view on the Unix Philosophy.
    1.49 +As there is no single definition of the Unix Philosophy,
    1.50 +several people have stated their view on what it comprises.
    1.51  Best known are:
    1.52  .IP \(bu
    1.53  Doug McIlroy's summary: ``Write programs that do one thing and do it well.''
    1.54 @@ -106,12 +103,24 @@
    1.55  .]
    1.56  .LP
    1.57  These different views on the Unix Philosophy have much in common.
    1.58 -Especially, the main concepts are similar for all of them.
    1.59 -But there are also points on which they differ.
    1.60 -This only underlines what the Unix Philosophy is:
    1.61 -A retrospective view on the main concepts of Unix software;
    1.62 -especially those that were successful and unique to Unix.
    1.63 -.\" really?
    1.64 +Especially, the main concepts are similar in all of them.
    1.65 +McIlroy's definition can surely be called the core of the Unix Philosophy,
    1.66 +but the fundamental idea behind it all, is ``small is beautiful''.
    1.67 +
    1.68 +.PP
    1.69 +The Unix Philosophy tells how to design and write good software for Unix.
    1.70 +Many concepts described here base on facilities of Unix.
    1.71 +Other operating systems may not offer such facilities,
    1.72 +hence it may not be possible to design software is the way of the Unix Philosophy.
    1.73 +
    1.74 +FIXME
    1.75 +
    1.76 +This paper discusses the recommendations of the Unix Philosophy about software design.
    1.77 +.PP
    1.78 +The here discussed ideas can get applied by any development process.
    1.79 +The Unix Philosophy does recommend how the software development process should look like,
    1.80 +but this shall not be of matter here.
    1.81 +Similar, the question of how to write the code is out of focus.
    1.82  .PP
    1.83  Before we will have a look at concrete concepts,
    1.84  we discuss why software design is important
    1.85 @@ -121,8 +130,8 @@
    1.86  .NH 1
    1.87  Importance of software design in general
    1.88  .LP
    1.89 -The design of a software describes its internal and external shape,
    1.90 -meaning structure and interfaces.
    1.91 +Software design is the planning of how the internal structure
    1.92 +and external interfaces of a software should look like.
    1.93  It has nothing to do with visual appearance.
    1.94  If we take a program as a car, then its color is of no matter.
    1.95  Its design would be the car's size, its shape, the locations of doors,