Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: version B 2.10.1 6/24/83; site seismo.UUCP Path: utzoo!linus!security!genrad!grkermit!masscomp!clyde!floyd!harpo!seismo!mo From: m...@seismo.UUCP (Mike O'Dell) Newsgroups: net.books,net.unix,net.unix-wizards Subject: Review of Kernighan and Pike's New Book Message-ID: <464@seismo.UUCP> Date: Sun, 11-Dec-83 23:54:12 EST Article-I.D.: seismo.464 Posted: Sun Dec 11 23:54:12 1983 Date-Received: Wed, 14-Dec-83 01:10:04 EST Organization: Center for Seismic Studies, Arlington, VA Lines: 111 Review of "The UNIX Programming Environment" by Brian Kernighan and Rob Pike Prentice-Hall Software Series Copyright 1984 Bel Telephone Laboratories (Available in bookstores now, in spite of copyright date.) Reviewer: Mike O'Dell mo@lbl-csam, lbl-csam!mo, seismo!mo "The UNIX Programming Environment" is book long overdue and badly needed. In this one place, you can find out "How to Write Good" in the Unix world. I recently saw a Letter-to-the-Editor of some trade rag effusing over how the Pick OS is better than Unix because in Pick you never have to write a program, while in Unix you always have to write a program (distinct implication was "in C"). If there ever was a rebuttal to that miscomprehension, this book is it. This book spans an amazing range of topics: it contains a VERY good upgrade of the "Unix for Beginners" chapter, and then proceeds to demonstrate just how much work can be done on Unix, even if the C compiler has been removed from the system. The treatment of shell programming (Bourne shell) is gradual and impressive. It shows the sheer power and elegance of Unix, while at the same time, not being coy about pointing out the occassional warts. From simple one-liners to embrionic SCCS-type tools, the reader learns the skills necessary to truly exploit the powerful programming language that is the shell. After mastering the shell, the discourse moves to things which really need C, and how to write them well. Design issues, coding hints, good practices, there is a wealth of information here. Starting with "cat" (Hello, Toronto!) which does all (only?!) the right things without needing flags, to a full-fledged interpreted programming language, here is a course in software engineering using power tools, instead of hammer-and-tongs. All along the way, things are built gradually, reusing previous pieces instead of starting from a blank sheet of paper. This book should be read at the terminal, doing the exercises right along. The reviewer has been thinking a great deal about the audience of this book. It is purest platinum for the programmer who while competent, is new to Unix and the Unix world view. Unix is a powerful environment and learning to use it effectively and harmoniously can sometimes go awry directly because the power and flexibility often make it almost as easy to do things wrong as right. Moreover, most programmers, even and especially many practicing Unix programmers, tend to think of solving problems by writing programs. This is to be encouraged; the problem, however, is people often start writing in the wrong language (frequently "C"). There are in fact many jobs which need programs to do them, but if your view of "how to get the job done" isn't altered by this text either you are already Genuinely Enlightened or you have probably missed the point. (There are indeed sublte points along the way.) While the book is well written and an interesting philosphical discourse, there are points the reviewer differs with, and no doubt, any reader will occassionally disagree with the authors. But that too is valuable. Thoughtful introspection is good for the soul, and gets one away from the terminal as well. Finally, I heartily commend this book to anyone wanting to Truly Know Unix; it ain't perfect, but it is enlightening. I particularly recommend it to persons responsible for influencing the direction of the system outside the BTL research group. If you ever wondered about the "intent", you wil probably never see it spelled out as well anywhere else. Finally, anyone attempting to "enhance" Unix for whatever reason or application should read this book. Before you can enhance it, you have to know what is REALLY there and what is NOT broken. Annotated Top-level Table of Contents: 1. UNIX for Beginners Well re-written; deals well with the issue of local system conventions for erase, kill, etc. 2. The File System What it does and doesn't do, and why that is important. 3. Using the Shell Intro to Metacharacters, I/O redirection, pipes, etc. 4. Filters grep, sed, awk and company 5. Shell Programming Production-quality shell scripts 6. Programming with Standard I/O Intro to the Standard I/O library ("C" obviously) 7. UNIX System Calls Low-level I/O, processes, signals, etc. 8. Program Development From a four-function calculator to an almost-Basic in 6 Easy Lessions 9. Document Preparation Meet -ms and troff 10. Epilog Appendix 1: ed summary Appendix 2: "hoc" manual page Appendix 3: "hoc" source code listing
Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!linus!security!genrad!grkermit!masscomp!clyde!floyd!harpo! seismo!hao!hplabs!sri-unix!beattie@mitre-gateway From: beattie%mitre-gate...@sri-unix.UUCP Newsgroups: net.unix Subject: kernighan & pike book Message-ID: <15862@sri-arpa.UUCP> Date: Sat, 21-Jan-84 22:07:32 EST Article-I.D.: sri-arpa.15862 Posted: Sat Jan 21 22:07:32 1984 Date-Received: Fri, 27-Jan-84 08:30:31 EST Lines: 5 From: brian beattie <beattie@mitre-gateway> Could some-one give a short review of this book beattie at mitre-gateway
Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: version B 2.10 5/3/83; site nsc.UUCP Path: utzoo!linus!security!genrad!grkermit!masscomp!clyde!floyd!harpo! seismo!hao!menlo70!nsc!chuqui From: chu...@nsc.UUCP Newsgroups: net.unix Subject: Re: kernighan & pike book Message-ID: <566@nsc.UUCP> Date: Tue, 24-Jan-84 13:14:52 EST Article-I.D.: nsc.566 Posted: Tue Jan 24 13:14:52 1984 Date-Received: Fri, 27-Jan-84 08:37:18 EST References: <15862@sri-arpa.UUCP> Organization: National Semiconductor, Sunnyvale Lines: 56 Speaking of reviewing the book, I have just finished it and was about to, so without further ado: *** The Review *** The Unix Programming Environment Brian W. Kernighan, Rob Pike Prentice Hall Software Series, $19.95 (355 pages softcover) For those that missed it, Rob Pike gave a talk at Unicom in Toronto on 'The Philosophy of Unix Programming (or cat -v considered harmful)'. In it, he discussed the pro's and con's of some of the trends he sees in Unix programming and alternatives. He promoted very heavily the tool orientation of small programs with single purposes put together in flexible ways. Two programs he took to task were 'more' (for the very obvious reasons of excessive functionality to the point on unmaintainability) and 'cat -v' because it took a filter that moves information and modified it to be a filter that modified information. The book is an expansion of this talk, and describes in detail (with many examples) how Rob and Brian feel Unix programs should be written. They discuss shell programming and C programming in detail, and also look at programs like sed, awk, lex, and yacc. There is some tutorial for all of these, but the real audience seems to be programmers with Unix experience. I was impressed with the talk at Uniforum, and I am even more impressed with the book. I do NOT recommend it as a first book on Unix programming (I much prefer the Bourne book for that), but it should be required reading for every Unix programmer. There are a lot of good programs in the example (such as vis, their replacement for cat -v, and p, their pager (with filename spelling correction, no less, which you'll never find in a tty driver (*hint*))). More than that, I found it showed me a lot about Unix about Unix and how to use it efficiently (and if you believe their philosophy, properly). I learned quite a bit about the shell (which doesn't suprise me too much) but I also learned quite a bit about C (which did suprise me, since I'm not exactly a C novice). There is a lot in this book that I haven't seen elsewhere. This book may not be for everyone. The people who like a few large programs (such as more) are not going to like this book any more than they liked the talk. I liked it a lot (if that wasn't obvious by now), but then my programming tends towards their philosophy anyway. Either way, you should read this book. On the chuqui scale: ***** (out of a possible 5) This book should be on everyones bookshelf. Congrats Brian and Rob for a good job very well done! -- From the house at Pooh Corner: Chuq (a Silly Old Bear) {fortune,menlo70}!nsc!chuqui have you hugged your Pooh today? Nuke the '58! Nuke the '58! The difficult we gave up on yesterday, the impossible we are giving up on now.
Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!linus!decvax!genrad!grkermit!masscomp!clyde!floyd!harpo! seismo!hao!hplabs!sri-unix!edhall@rand-unix From: edhall%rand-u...@sri-unix.UUCP Newsgroups: net.unix Subject: Re: kernighan & pike book Message-ID: <16035@sri-arpa.UUCP> Date: Thu, 26-Jan-84 18:09:00 EST Article-I.D.: sri-arpa.16035 Posted: Thu Jan 26 18:09:00 1984 Date-Received: Thu, 2-Feb-84 01:47:57 EST Lines: 49 I expected someone else to comment by now, but since no one has, I'll give you my two-cents' worth. I've skimmed through the entire book and studied the introductory chapter and bits and pieces scattered through it, so this isn't meant to be a definitive review--just a first impression. 1) The book is pretty `meaty'. It has some pretty sophisticated examples (a calculator language that grows into a mini-programming language is developed in later chapters), and the level of sophis- tication expected seems about on a par with The C Programming Language. Not for neophytes to computing. It has the effrontery to explain YACC in a few pages and them proceed to *use* it. 2) It presents a lot of information. The second chapter explains the Unix filesystem: it not only *mentions* inodes, it goes over in great detail what the various fields in the inode structure mean. In later chapters programs like AWK and SED are presented in fairly good detail (enough, I would guess, to be useful, which is more than I can say for the manual pages or most introductory texts). 3) K&P aren't afraid to call a misfeature a mistake, or to present a strong opinion, though they label it as such. I find this refreshing compared to the breathless praise some Unix books give. 4) This book is truest to the `Unix Philosophy' as I understand it. The concept of well-defined tools is presented and used repeatedly. `Small is beautiful' philosophy is there but subdued. 5) I found the examples refreshingly uncontrived (or humorously contrived). The attitude I get is `this is serious business, but not *that* serious'. 6) I would not hesitate to recommend this book to someone who was already fairly knowledgable about computer systems and who has good access to a Unix system (K&P reccommend reading the book beside your terminal and trying things for yourself as you encounter them). But I think it might be a waste of money to someone who does not have such experience. It assumes a bit more than the common introductory texts do. Not an easy read, but not a boring one, either. 'nuff said for now. I'm sure other people will have more (and likely better) comments as time goes on. -Ed Hall edhall@rand-unix (ARPA) decvax!randvax!edhall (UUCP)
Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!watmath!clyde!floyd!harpo!seismo!hao!hplabs!sri-unix!gwyn@brl-vld From: gwyn%brl-...@sri-unix.UUCP Newsgroups: net.unix Subject: none Message-ID: <16414@sri-arpa.UUCP> Date: Sat, 4-Feb-84 23:06:14 EST Article-I.D.: sri-arpa.16414 Posted: Sat Feb 4 23:06:14 1984 Date-Received: Thu, 9-Feb-84 02:49:38 EST Lines: 43 From: Doug Gwyn (VLD/VMB) <gwyn@brl-vld> Here is a brief review of "The UNIX Programming Environment" by Brian W. Kernighan & Rob Pike (1984, Prentice-Hall, ISBN 0-13-937681-X {PBK}). (The authors work at Bell Labs and are well known to the UNIX community.) This is the best book I have ever seen for UNIX programmers. The first few chapters can be read profitably by any intelligent first-time UNIX user, but the book overall is targeted for professional programmers who are encountering UNIX for the first time. I must say that many old- timers could learn something from this book, too. The chapter titles are: UNIX for Beginners The File System Using the Shell Filters Shell Programming Programming with Standard I/O UNIX System Calls Program Development Document Preparation Epilog with appendices Editor summary "hoc" Manual "hoc" Listing "hoc" is an interpreter for a programmable calculator language, used as a real-world example of program development. This book is not just a description of features available on UNIX; instead, the authors explain what is going on and why. Anyone familiar with "Software Tools" will recognize the approach. Roughly half the book emphasizes the use of existing tools in shell programs. This is as it should be; it is perhaps the single greatest contribution of UNIX to program development. It is remarkable how little dependency on the particular version of UNIX there is. The few variations that matter are dealt with as needed. I would recommend this book as THE book for all UNIX programmers.