The Art of UNIX Programming
||Author: Eric S. Raymond|
List Price: $39.99
Our Price: Click to see the latest and low price
Publisher: Addison-Wesley Pub Co (17 September, 2003)
Sales Rank: 7,076
Average Customer Rating: 4.53 out of 5
Customer ReviewsRating: 5 out of 5
A Spectacular Book
This is a really great book, 30 pages into it I had already begun raving about it to my peers. It takes the reader through years of Unix history, philosophy, application, and wisdom. It starts out slowly, explaining how an operating system can create and sustain any sort of culture. It admits the flaws in Unix and highlights it's strengths and successes. It then gets into the "Rules" of Unix Philosophy, which was something that was greatly beneficial to me in my coding life. It teaches the reader to make things modular and simple, not try to redo things that have been done before, not to be overly clever, etc.
Throughout this book the reader is given examples of some of the most basic things in the unix world, why text is so important, what "transparency" is when referring to coding, and it even includes a non-bias section reviewing some standard unix text editors. The book also gets into evaluating various languages in unix, including which is most appropriate for certain projects, which can be very helpful to someone looking to learn a programming language but who is unsure of which direction to take. A whole huge section of this book gets into the community of unix, standards, documentation, licensing, and the actual personal community.
The most thrilling part of this book for me was the History of Unix, hackers and the open srouce movement. As a history buff I always tend to be drawn to such things, and I believe he did a very good job and kept me enthralled. I also enjoyed Appendix D: Rootless Root: The Unix Koans of Master Foo, it was quite witty and amusing, as well as full of great lessons.
A wonderful computer book suitable for any sort of computer buff, even if they aren't currently working directly with Unix. It's easy to skip around this book by scanning the contents to just see what you're interested in, I really believe there is something for every computer enthusist, I am surprised a book like this hadn't been written sooner.
Rating: 5 out of 5
Does better at expanding your mind than herbal Zen :-)
This book is required reading for anyone involved in any form of Open Source IT. It's wisdom right up there with the The Cathedraland the Bazaar, RMS's GNU GPL, and any bantering quotes you get from Linus himself. With his book, Eric Raymond, has attempted and come amazingly close to the impossible dream of capturing the logic and natural beauty of the UNIX community/philosophy. Eric has already discussed the ramifications of UNIX/Linux's ever changing and complex structure; in both the applications, coding, and social sense . As Linus once said "The best analogy is biological diversity. You have the Linux approach that is fairly diverse and all over the map. Maybe it is not very efficient. But it works very well in the face of complexity and changing circumstances." The Art of UNIX Programming takes a very accurate overview snapshot of what UNIX means right now. Although Eric is not intensionally a "big picture" kind of guy he has painstakingly gathered all relevant information while filtering out the garbage. Every UNIX programmer secretly longs to know what Eric has so benevolently written in this book through experience. They just may not know it yet.
Of course there are some stances he takes trying too hard to go for the "big picture". Such as the already mentioned renouncement of the Object Oriented approach. But it's not a total renouncement, and the left over renouncement is for good reason on if taken on the surface. What he means is that it is better to create a small tool in a scripting language and then do the Object Orientation through pipes for example: ps -A | grep bash | less. That's like calling upon objects less(grep(ps(A), "bash")), as functions; whatever you wanna call it, if it has encapsulation inheritance polymorphism then it's OO by definition. Eric would like to live in a world with many small tools (or libraries if you will) that when combined can create something much larger in scope. The argument is akin to something like an automotive factory assembly line. However, when taken to far it's akin to a one hundred thousand monkeys writing on one hundred thousand typewriters... and you know the rest and that'll never happen. I guess it all depends on if your building off of an axle of modularity or monkeys.
Anyway, buy this book and you'll have no end of geeky philosophy to argue about.
Rating: 4 out of 5
More books like this need to be written
"The Art of UNIX Programming" (TAOUP) is a unique book, since it deals with "UNIX" engineering principles. ("UNIX" means the original OS as well as derivatives and relatives.) Rather than discuss the filesystem, commands, or services, TAOUP explains history, culture, and rationale. I found the book enlightening and easy to read and recommend it to all UNIX users.
Several reviewers critique author Eric Raymond's assessments of programming languages and the Windows OS family. As a security engineer I see Windows continue to fail miserably, so much so that I'm beginning to agree that Windows cannot be secured. (Almost one year ago I criticized Bellovin et al for the same judgment, but now I tend to agree.) I would be surprised if a real Windows advocate reviewed and contributed to drafts of TAOUP, as a few strategic pro-Windows points might have made ESR's other arguments stronger. A second way to strengthen the anti-Windows stance would be more technical discussion of Windows flaws. The devastating "shatter" flaws of 2002 merit no more than a footnote on page 69, but could have a been a whole section unto themselves.
Regarding languages and OS comparisons, at this early point in my career I fit the "fool" category of p. 507. I leave it to more experienced developers to debate programming language virtues. It seems the author is not as current on language developments as his critics, which is regrettable but understandable given TAOUP's scope. I personally questioned the repeated invocation of Emacs Lisp. I found ESR's recommendation to employ interpreted languages useful and plan to take a closer look at Python. I question ESR's claim on p. 382 that GCC is so powerful that "there is effectively no proprietary UNIX compiler market left," when Sun's compiler for Solaris seems to outperform GCC.
I found histories of "UNIX vs. UNIX" and "UNIX vs the world" very informative. TAOUP presents concise explanations of licensing, RFC creation, and UNIX philosophy. I was happy to see that an open source project to which I contribute (Sguil) met many UNIX design criteria, like text-based communication between small collaborating daemons. I plan to follow TAOUP's recommendations for documentation so helpfully discussed in chapter 18 when I release the next set of Sguil guides.
TAOUP offers numerous priceless quotes from UNIX pioneers, but ESR himself offers my favorite: "Open source is what happens when code reuse gets a flag and an army." I hope UNIX advocates everywhere carry TAOUP into battle against their proprietary, monopolistic OS foes. With a few more nods to the enemy and a more balanced comparison of languages, TAOUP will be unbeatable.
· Unix Network Programming, Vol. 1: The Sockets Networking API, Third Edition
· Code Reading: The Open Source Perspective
· Linux Kernel Development
· Essential CVS