Mercurial > docs > unix-phil
view unix-phil-slides.ms @ 24:2335f5658fca
added poster and slides
author | meillo@marmaro.de |
---|---|
date | Fri, 05 Mar 2010 23:56:48 +0100 |
parents | |
children | e6ac51dc18bf |
line wrap: on
line source
.TL \fR\s-6Why\s0\fP .br the Unix Philosophy .br .vs -4 \fR\s-6(still) matters\s0\fP .AU .ft R .sp 1.2i .ps 11 markus schnalke <meillo@marmaro.de> .S "goals of this talk .I introduce the Unix Phil .I explain why most modern software is crap .I explain why the Unix Phil leads to better software .I convince you that good software is of matter .sp 2 .I make you think .S "roadmap .I Historical background .I What is the Unix Philosophy? .I The Unix Phil after Gancarz .I Discussion on real world examples .I The Unix Phil is more than software dev guidelines .S "me and the UP .LP first contact: through the suckless project .LP ``cat -v Considered Harmful'' .LP ``The Unix and the Echo'' .LP ``The Unix Programming Environment'' .sp 1 .LP better understanding through digging in the past .P "historical background .S "historical background .I the late 60s and early 70s .I operating systems are complex .I MULTICS just failed .I Brooks' ``The Mythical Man-Month'' .I a lot of different hardware .I limited computing power .I textual input and output (line printers) .S "everything is a file .LP is the(?) basic concept in Unix (and even more in Plan9) .LP made simple operating systems possible .LP it is not covered by the Unix Phil; the Unix Phil is on a different level .sp 2 .LP Unix is mainly two things: .I an operating system (system calls) .I a toolchest (coreutils) .P "What is the Unix Phil .S "What is the Unix Phil *itself*? .LP ``The Unix philosophy is a set of cultural norms and philosophical approaches to developing software based on the experience of leading developers of the Unix operating system.'' (wikipedia) .sp 2 .LP How the inventors of Unix write software. .LP Common things of classic Unix tools. .sp 2 .LP difficult to define .S "Unix Phil vs. SW dev processes .LP the Unix Phil .I much: *what* to program .I few: *how* to program .LP Software developments processes: .I few: *what* to program .I much: *how* to program .sp 2 .LP Extreme Programming is like the Unix Phil but with more *how* than *what*, and with formalisms .S "What is the Unix Phil? .I Doug McIlroy (1978) .I Mike Gancarz: ``The Unix Philosophy'' (1994) .I Eric S. Raymond: ``The Art of Unix Programming'' (2003) .sp 2 .I Richard Gabriel: ``Worse is Better'' (1989) .S "Doug McIlroy .LP This is the Unix philosophy: .I Write programs that do one thing and do it well. .I Write programs to work together. .I Write programs to handle text streams, because that is a universal interface. .S "Mike Gancarz: ``The Unix Philosophy'' .I Small is beautiful. .I Make each program do one thing well. .I Build a prototype as soon as possible. .I Choose portability over efficiency. .I Store data in flat text files. .I Use software leverage to your advantage. .I Use shell scripts to increase leverage and portability. .I Avoid captive user interfaces. .I Make every program a filter. .sp 1 .LP plus ten lesser tenets .P "The Unix Phil after Gancarz .S "Small is beautiful. .LP foo .S "Make each program do one thing well. .LP foo .S "Build a prototype as soon as possible. .LP foo .S "Choose portability over efficiency. .LP foo .S "Store data in flat text files. .LP foo .S "Use software leverage to your advantage. .LP foo .S "Use shell scripts to increase leverage and portability. .LP foo .S "Avoid captive user interfaces. .LP foo .S "Make every program a filter. .LP foo .P "real world examples .S "various .LP who uses .CW "grep -R ? .sp 1 .LP .CW "cat -v .sp 1 .LP pagers are taken for granted .sp 1 .LP what about the readline? .S "find -printf .LP How to reformat the output of find(1) to have ``FILENAME PATH'' instead of ``PATH/FILENAME''? .LP the ``easy'' way: \f(CWfind /dir -printf "%P %h\en"\fP .LP the ``good'' way: .br .CW "\s-1find /dir | sed 's,\e(.*\e)/\e(.*\e),\e2 \e1,' .LP The difference shows off when one wants, for instance, the path to be manipulated further. .S "MH / nmh .LP a Mail User Agent (MUA) .S "uzbl .LP a web browser that adheres to the Unix Phil .P "more than software dev guidelines .P "literature .S literature .I ``\fBText Processing and Typesetting with Unix\fP'' by Barron and Rees explains everything pretty good (focus on .CW nroff ) .I ``\fBHeirloom Documentation Tools Nroff/Troff User's Manual\fP'' by Ossanna, Kernighan, and Ritter is more a technical reference .I Various documents collected on .CW \s-2http://troff.org\s+2 .S .LP this talk was prepared using tools of the Heirloom project: .CW \s-2http://heirloom.sf.net\s+2 .LP the slides macros are based on .br .CW \s-2http://repo.cat-v.org/troff-slider/\s+2 .sp .LP the slides are available on my website .CW \s-2http://marmaro.de/docs\s+2 and on .CW \s-2http://ulm.ccc.de/ChaosSeminar/\s+2 .sp 2010-03-08