Cover V08, I05

Books: A User's Report

Elizabeth Zinkann

The books in this column present an unusual assortment. It was a pleasure to read and review the latest book by Kernighan and Pike, a new edition of a small and complete Internet Guide, a networking troubleshooting how-to book, and a CD-ROM package for UNIX. Specifically, I read and reviewed The Practice of Programming by Brian W. Kernighan and Rob Pike (The Addison-Wesley Professional Computing Series, Addison-Wesley); The Internet: The Rough Guide 1999 by Angus J. Kennedy (Rough Guides Ltd., Distributed by The Penguin Group); SAMS Teach Yourself Network Troubleshooting in 24 Hours by Jonathan Feldman (SAMS Publishing); and The UNIX CD Bookshelf: 6 Bestselling Books on CD-ROM (O'Reilly & Associates, Inc.). I hope that you enjoy the books and the reviews.

The Practice of Programming
By Brian W. Kernighan and Rob Pike
The Addison-Wesley Professional Computing Series
ISBN 0-201-61586-X
267 Pages

One of the fundamental references for writing well is "The Elements of Style" by William Strunk, Jr. and E. B. White. The original "little" book presents the essentials of good writing principles positively, clearly, and precisely in a compact volume. (My well-worn copy ends on page 78.) Brian W. Kernighan and P. J. Plauger later adapted Strunk and White's format for The Elements of Programming Style. Kernighan and Plauger also extended the concepts of good writing to include the techniques of good programming, utilizing examples in Fortran and PL/I. With the release of The Practice of Programming, Kernighan and Pike (authors of the superb classic, The UNIX Programming Environment) examine the features of program design, implementation, and the attributes that distinguish excellent from mediocre programming. The authors illustrate the basic qualities that all code should ideally possess. Due to time and energy constraints (including the infamous forgetfulness factor), some programmers have written functions and programs that lack these characteristics. Kernighan and Pike discuss various aspects of programming methods through the following chapters: Style, Algorithms and Data Structures, Design and Implementation, Interfaces, Debugging, Testing, Performance, Portability, and Notation. They also provide a valuable Epilogue and an Appendix entitled Collected Rules. Throughout the book, the authors demonstrate essential guidelines that produce more efficient and straightforward programs.

Kernighan and Pike realize the deadlines, constraints, and pressures facing the professional programmer. The principles that they emphasize include simplicity, clarity, formatting, generality, and evolution, to name a few. For example, although it is possible to combine several C statements into one or two more complex lines of code, the longer version may be equally efficient and will definitely produce a more quickly and easily understandable program. Formatting a program also increases its readability for the programmer who needs to modify it. The concept of generality encourages the use of existing solutions, rather than creating similar functions for each program. Evolution refers to the improvement cycle; it requires a series of solutions and refinements to satisfactorily complete a program. The authors offer solid and useful suggestions for each step of the programming process with numerous examples in C, C++, Java, and occasionally awk. Each chapter illustrates a concept or practice through "before" and "after" code segments.

Kernighan and Pike demonstrate how to analyze and correct an ineffectual function or prototype. Two separate chapters, Debugging and Testing, detail these often confused topics. Debugging chronicles various types of coding frustrations: non-reproducible, intermittent, and persistent bugs. The Testing chapter demonstrates methods to effectively test code both as it is written and after it is completed. (First, you check to see if works as expected. Then, you check to see if it works with the unexpected.) The Epilogue and the Appendix: Collected Rules furnish the reader with an unusual and excellent summary and quick reference to the principles discussed throughout the book. The Epilogue explains each of the concepts in paragraph format; the Appendix succinctly outlines the guidelines by topic.

The Practice of Programming is an outstanding book. Kernighan and Pike address realistic and effective programming conventions that can easily be implemented. As an example, the authors demonstrate various precise and vague ways to create documentation. They also advocate knowing which functions are provided in the language's libraries to avoid writing a utility that already exists. The UNIX Programming Environment was the first UNIX book I read. (I still recommend it.) Kernighan and Pike continue to demonstrate a readable and well-written style combined with their experience and valuable expertise. The Practice of Programming features concepts, exercises, examples, principles, and timesaving measures in an enlightening and extraordinary volume. As the authors detail the routines of both good and poor coding, they also furnish the essential qualities for good programming practices. Anyone and everyone in a computing environment will definitely and positively benefit from this book. Whether you are a beginning programmer or an experienced professional, this book will clarify and reaffirm design principles that are often overlooked or forgotten.

The Internet: The Rough Guide 1999
By Angus J. Kennedy
Rough Guides Ltd.
Distributed by The Penguin Group
ISBN 1-85828-343-4
512 Pages

Each new edition of The Internet: The Rough Guide (formerly The Internet & World Wide Web: The Rough Guide) pleasantly surprises me. Its compact size (approximately 4" by 5") provides an extremely portable resource. Its audience is comprised of both Macintosh and PC users. (There is not a Macintosh or Windows specific edition.) However, the book's range and depth of topics remains its most amazing feature. Kennedy addresses the topics through four sections: Part One: Basics, Part Two: The Guide, Part Three: Contexts, and Part Four: ISP Directory. Within Part One: Basics, the author discusses Frequently Asked Questions, Getting Connected, Online Services, Connection Software, The Web Browser, Connecting for the First Time, Surfing the World Wide Web, Email, Mailing Lists, Usenet Newsgroups, Downloading Software, Finding It, Chat, Online Gaming, Creating Your Own Web Page, and On The Road. The most recent additions to the Basics division include Connection Software, The Web Browser, and Connecting for the First Time.

Kennedy demonstrates how to configure and utilize your software for easier access through your service or your provider. The chapters have been modified and expanded to reflect both software trends and hardware developments. The former section entitled Internet Relay Chat has evolved to the current chapter Chat, which describes ICQ and AOL's Instant Messenger, Web Chat, conferencing, and Internet Telephony. (Internet Relay Chat customs and conventions are also explored and explained.) Part Two: The Guide surveys World Wide Web Sites, Newsgroups, and a Software Roundup, while Part Three: Context reviews A Brief History of the Internet, Net Language, a Glossary, and Further Reading. The concluding section, Part Four: ISP Directory, contains Internet Service Providers, the Index, and 50 Things To Do With This Book.

Kennedy's pocket-sized handbook provides an excellent introduction and reference for any Internet user. He explains concepts and procedures completely in English. (The reader does not need a computer dictionary or a computer connected to The Web directory alone chronicles 1100 sites, depicting a wide variety of interests. Kennedy demonstrates an amusing and entertaining writing style, whether discussing browser plug-ins, HTML editors, email organization, newsgroups, games, or file compression. The Internet: The Rough Guide 1999 by Angus J. Kennedy is a notably complete and straightforward Internet handbook.

SAMS Teach Yourself Network Troubleshooting in 24 Hours
By Jonathan Feldman
SAMS Publishing
ISBN 0-672-31488-6 436
Pages $19.99

A fundamental practice in programming involves dividing a large task into several small ones. This prevents the assignment from overwhelming the programmer and usually produces a more effective program. (This concept also works well with painting, carrying in the groceries, etc.) The SAMS Teach Yourself * in 24 Hours books utilize the same principle: they separate complex topics into understandable segments. In SAMS Teach Yourself Network Troubleshooting in 24 Hours, Jonathan Feldman presents the topics in four sections: Getting Your House In Order, Black Box Troubleshooting Strategies, The Care and Feeding of Network Appliances, and In The Trenches. Each segment contains two or more hours. (Note that hours or lessons are used in place of chapters.) The first part addresses 1) "The Telephone Analogy": Becoming Familiar with Basic Networking Concepts, and 2) "You Can't Have Too Much Documentation, Money, or Love!" The succeeding section, "Black Box" Troubleshooting Strategies, features assorted problem-solving techniques: The Delta Method: Identifying Network Change, The Napoleon Method: Divide and Conquer, The Sesame Street Method: One of These Things Is Not Like the Other, The SOAP Method: Subjective Data, Objective Data, Analysis, and Plan, and The Simple Simon Approach.

In The Care and Feeding of Network Appliances, Feldman examines: Hard Basics: Guide to Being A Hardware Geek, Ethernet Basics, Token-Ring Basics, Windows Networking Basics, UNIX Networking Basics, NetWare Networking Basics, Router and Switch Basics, and Firewall and Proxy Server Basics. The concluding section, In The Trenches, presents Beauty Is Consistency Deep: Saving Yourself Trouble, Where Do I Start?, Lots of Different People in Your Neighborhood: In-Depth Application Troubleshooting, Internet/Intranet Troubleshooting, Network Troubleshooters Just Wanna Have Fun, Tell Me About Your Network: Network Analyzers, Who Watches the Watchmen?: Network Management Tools, The Network Is Slow!: Getting A Definitive Answer to A Subjective Question, and Reverse-Engineering Somebody Else's Network. The Appendixes include a Glossary and the Index. A troubleshooting quick reference card is enclosed, and a chart of the hour/lesson and its corresponding content appears on the inside front and back covers.

The format of the hour/chapters includes an introduction to the specific topic, Feldman's unique discussions, a summary, and Workshop with Questions and Answers (Q&A), a short and simple quiz, and the quiz answers. Throughout the book, the author provides Tips, Cautions, and Notes to help the reader clarify procedures and avoid problems. Feldman writes in a readable style, which not only informs, but also encourages the reader. The beginner can easily identify with the author's hypothetical situations and also profit from Feldman's experience and considerable knowledge. SAMS Teach Yourself Network Troubleshooting in 24 Hours by Jonathan Feldman is a superb book, a valuable learning tool, and a superior problem-solving reference.

The UNIX CD Bookshelf
6 Bestselling Books on CD-ROM
O'Reilly & Associates, Inc.
ISBN 1-56592-406-1
444 Pages
Featured CD-ROM Package

One of the difficulties with on-site troubleshooting or training concerns both documentation and utilities. The client site often doesn't have a certain software implementation or documentation to more clearly present the benefits of the topic under discussion. The only solution to this dilemma has been to take documentation, diskettes, and CDs with you to the site. With the debut of The UNIX CD Bookshelf, O'Reilly & Associates, Inc. have provided a solution to both of these problems. The UNIX CD Bookshelf provides one book in print, UNIX in a Nutshell, System V Edition, plus the CD. The CD-ROM contains six O'Reilly classics: UNIX in a Nutshell, System V Edition, Learning the vi Editor, 5th Edition; Learning the Korn Shell; sed & awk, 2nd Edition; Learning the UNIX Operating System, 4th Edition; and UNIX Power Tools, 2nd Edition. The software from UNIX Power Tools is also included. The books on the CD-ROM contain hyperlinks, and you can search any of the books individually, access them in chapter order, or look for something by its beginning letter. You can even search all six books simultaneously. Since the CD-ROM utilizes browser software to run, it can be accessed from almost any platform. A Java run-time interpreter allows the user to use it on Windows 95, Windows NT, and Macintosh platforms, in addition to the UNIX platforms. Most book CDs require some type of installation. However, since this uses a browser, I didn't have to install anything. Using Windows 95, an MS-DOS Window opened and searched for a port. Then Netscape began, and navigating among the books was quite simple.

This is an extraordinary CD-ROM. The capability to access the sed & awk book from the Learning the Korn Shell (or any of the included six books) is definitely a superb design. The inclusion of the printed version of UNIX in a Nutshell, in a durable slipcase, is another benefit. (There are times when a printed copy is preferable.) All of the books are excellent. A surprising feature is that the CD-ROM was actually simple to release from the plastic envelope. The UNIX CD Bookshelf is a portable library and software resource and still weighs less than 2 pounds! Any consultant will appreciate the value of its streamlined design, its enormous wealth of information, and its straightforward interface. n

About the Author

Elizabeth Zinkann has been involved in the UNIX and C environment for the past 12 years. She is currently a UNIX and C consultant, and one of her specialties is UNIX education. In addition to her computer science background, she also has a degree in English. Elizabeth can be reached via America Online (