The Art of Unix Programming

(This book is also available for free here). The Art of Unix Programming is about Unix culture and about old-style Unix programmers approach to design and interface their application. It is not, strictly speaking about programming (nor about art), but the title correctly propose the idea of a balanced approach based on good instincts and well behaved practices.
I wrote “old-style” because the author is strongly rooted in the Unix culture and more about text oriented stuff rather than interactive GUI. Also “old-style” was about sharing and community much like GNU/Linux today as opposing to proprietary Unixes which are about making money by selling software.
The author presents 17 rules considered the basics for Unix philosophy how these are driving development and why they are good. These rules are very close to software engineering principles. Call them rules, call them principles, what is important is that these are things worth doing.
Trying to tackle nearly everything is going on in Unix and abstracting from it in a generalization is not an easy tasks. And in the long run the book loses here and there some of the interest it triggers in the most entertaining pages. Even if Unix is not your main development environment, I think that some parts of the books are nonetheless worth reading. You can have an idea of the book by browsing it on-line before deciding if it’ll be your next buy.
The criticism about OO is appropriate. I mean every paradigm could promote bad habits and OO is not an exception. One of the bad habits of OO is to create too many layers of encapsulation and inheritance for the problem. Causing the resulting code to be encapsulated but obscure with too much spred mechanics. A good quote in the book, even if it hasn’t to be taken to letter, is “If you know what you’re doing, three layers is enough; if you don’t, even seventeen levels won’t help” – attributed to Michael Padlipsky (The Elements of Networking Style. iUniverse.com. 2000. ISBN 0-595-08879-1).

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.