Electronic Review of Computer Books

[ ERCB Home | New | Feature | Brief | DDJ | Letters | Links ]

[an error occurred while processing this directive]

Vital Statistics

Title

C: The Complete Reference, Fourth Edition

Author

Herbert Schildt

Publisher

Osborne McGraw-Hill
http://www.osborne.com/

Copyright

2000

ISBN

0-07-212124-6

Pages

805

Price

$39.00


C99 and You

C: The Complete Reference, by Herbert Schildt, is the fourth edition of Schildt's classic desktop reference for the language with which, says Schildt, "programming entered the modern age." Well organized and well ordered, rich with practical code examples, the book is much more than a reference of the sort that could be provided by shoveling the rules and libraries of the language into print. Foremost it is a tutorial for those new to C leading them to mastery of both the C language and the C idiom. Beyond that, it is a helpful and easily perused compendium of great usefulness even to the experienced C programmer.

The 29 chapters of the C: The Complete Reference are organized into six sections:

  1. Foundational C
  2. The C99 Standard
  3. The C Standard Library
  4. Algorithms and Applications
  5. Software Development Using C
  6. A C Interpreter

The first section, "Foundational C," teaches you the language, with examples of each keyword and operator. These 275 pages are as readable and complete an introduction to the C language as the practical programmer is likely to need.

The second section, "The C99 Standard," is of interest to every C programmer. Schildt served on the committee that promulgated C99. Several significant changes (such as requiring int declarations and return types of all functions) and a number of innovations (such as variable-sized arrays) that require the professional's attention are documented in the current work. Throughout the book, the examples have been combed for C99 solecisms; variations on usage between C89 and C99 have been noted where they occur.

The third section, "The C Standard Library" describes the functions and macros of all libraries, again presenting examples with each function described.

The final three sections provide straightforward and marvelously concise examples of at least 90 percent of what can be done and has been done in the C language.

"Algorithms and Applications" covers sorting, search, queues, lists, trees, hashes and sparse arrays, expression parsing, and artificial intelligence problems. "Software Development Using C" covers the development cycle, accepted practices, and even includes the obligatory Windows skeleton. The complete exercise, "A C Interpreter," exemplifies that well-known journeyman's piece which every tyro must craft at least once for his or her C education to be complete.

I contacted Schildt by phone at his farm in Missouri where he is spending a few weeks this summer with his son. Schildt told me that, by his own count, including revised editions, C: The Complete Reference, Fourth Edition was his 70th computer book and that he is currently working on number 72. His first book was C Made Easy, also from Osborne, where Schildt began writing computer books in 1984.

"I have not noticed too many other books yet on C99," Schildt told me. "One suspects there is not going to be a lot of initial coverage. Java and C++ are grabbing the attention.

"I came up through all the languages, BASIC, FORTRAN, ALGOL, PASCAL. To me, C was where programming entered the modern age. When I first encountered C, I looked at the language and said, 'Oh, yeah!' I was on the first ANSI C Standard committee. I know how corny this sounds, but I love all these languages, especially C, which possesses great elegance and purity.

"So I also joined the C99 committee. That standard took a number of years, we sort of got stuck on it. It seemed to me that there was a chance that C99 could get lost in the noise if didn't get covered in an out-front way. I talked to my publisher about it. I have a lot of publishing demands, I'm scheduled a year in advance. We had been holding back on updating the C Reference until some watershed event, so we kept waiting for C97, C98... When it finally got there, I had to delay other projects 3 months to complete the Fourth Edition. This was important. Substantial additions had to be made to the book, so we shoved things back, my publisher made adjustments. I'm not sure this was the best financial decision, but it was a labor of love."

I asked Schildt, "Were the changes made in C99 the paramount alterations to the text for the Fourth Edition?"

He replied, "Yes, but to me, the most striking changes are the stylistic changes I've felt compelled to make. For one thing, C++ and Java have backfed changes into how people write C. For that matter, Java has backfed into C++. Java, having the stronger object model, has influenced the way C++ programmers approach writing code.

"Up until C99, C allowed the default to int, no prototypes... Still, people began not to use these features, they used the C subset supported by C++ rather than the more liberal C89. In the Third Edition, I went to full prototyping but still included examples of default to int. But five years later now, people are not writing code that way. We have all learned the benefits of explicit declarations, etc.

"I pretty much try to reflect the way code is written in the real world. Now, it's absolutely true that commercial C code is generally more dense than in my book. But in a book, you want examples to be clear. Certain optimizations, that compacting of expressions of which good C programmers are justifiably proud, these I avoided.

"Sometimes, looking back, I ask, 'Is it possible that 10 years ago my coding style looked like this?' But I just always write my books to reflect the way C code is being written at the time."

I asked Schildt if a book on C, in this era of C++ and Java, might not be a buggy whip, an anachronism? He replied, "The Fourth Edition was released in May, 2000 and is already [in August, 2000] into a second printing. This is a book used in universities, technical schools, and community colleges where C, quite reasonably, is taught as precursor to C++.

"Programming is a combination of art and science. Great programmers are great technicians but also great artists. Their work changes in ways which reflect the evolution of the person as they grow through life.

"C is not dead. If I write a utility program, it's a C program. You don't need objects to write a 150-line utility. But most importantly, C is today the lingua franca of programming, the language in which examples of algorithms are expressed world-wide. To be a programmer nowadays means you can read C syntax."

-- Jack Woehr (http://www.well.com/~jax/rcfb)

 


Quick Rating

Readability

Star Star Star Star

Originality

Star Star Star

Organization

Star Star Star

Accuracy

Star Star Star

Consistency

Star Star Star

Depth

Star Star Star

Timeliness

Star Star Star

Editing

Star Star Star

Design

Star Star Star

Overall Value

Star Star Star

Explanation of ERCB rating scale:
No stars = unacceptable
1 Star = marginal
2 Stars = average
3 Stars = above average
4 Stars = exceptional.


Copyright © 2000 Electronic Review of Computer Books
Created 10/5/2000 / Last modified 10/5/2000 / webmaster@ercb.com