Computing Reviews
Today's Issue Hot Topics Search Browse Recommended My Account Log In
Review Help
Search
Beginning C (5th ed.)
Horton I., Apress, Berkeley, CA, 2013. 688 pp. Type: Book (978-1-430248-81-1)
Date Reviewed: Jul 28 2014

This book is intended for readers with little or no programming experience. It introduces C as defined by the C11 standard (ISO/IEC 9899:2011, Information technology, Programming Languages, C). Horton makes no attempt to identify differences between this standard and previous standards. He acknowledges that some language features are optional, and that a given compiler may not implement all features; nevertheless, he asserts that the most common reason for a program not working, at least 99.9 percent of the time, is due to coding mistakes. To his credit, Horton considers the optional bounds-checking routines introduced by C11 very important, and he illustrates their use.

Readers are encouraged to type rather than copy the programming examples, which is very good advice. To compile and run programs, readers are expected to use the command line or an integrated development environment (IDE); Horton mentions the gcc compiler for Unix and the Pelles IDE for Windows. Compiling in the command line is illustrated with a one-line example without compiler options. Horton describes the function of a linker and mentions that this function is usually provided within an IDE, but he gives no clue as to how to handle this important step from the command line.

The book covers a great deal of ground in 14 chapters and five appendices. The chapter tiles are: “Programming in C,” “First Steps in Programming,” “Making Decisions,” “Loops,” “Arrays,” “Applications with Strings and Text,” “Pointers,” “Structuring Your Programs,” “More on Functions,” “Essential Input and Output,” “Structuring Data,” “Working with Files,” “The Preprocessor and Debugging,” and “Advanced and Specialized Topics.” The appendices are: “Computer Arithmetic,” “ASCII Character Code Definitions,” “Reserved Words in C,” “Input and Output Format Specifications,” and “Standard Library Header Files.”

Sample code is abundant; often, code consists of small but complete programs, sample output, and a follow-up description of how the program works. Most chapters also contain a section called “Designing a Program,” where a problem is outlined and analyzed, and a program is coded and executed. Most of these programs are straightforward and appropriate for the intended audience; some are interesting. Most chapters end with a handful of simple exercises.

A novice who reads the book attentively and works assiduously through the programs and exercises in the book could indeed acquire a good foundation: a solid knowledge of C and a limited glimpse of programming in the large.

Unfortunately, the book is marred by some serious issues. These are the ones that bothered me the most:

  • The tone, which is perhaps intended to be friendly and informal, is frequently patronizing.
  • The program documentation relies excessively on superfluous comments rather than the judicious naming of variables.
  • The index is not particularly helpful. Some entries are missing; many others refer to some page where a topic is mentioned, but not the first time the topic appears nor, more importantly, to the main section where it is covered.
  • The editing is less than stellar. As an example, the definition of complex numbers division on page 604 is incorrect. Another example appears on page 602, which contains the following sentence: “The stdint.h header defines signed and unsigned integer types that have a fixed number of bits and uses twos to complement representation for a negative value.” That must surely be a reference to the two’s complement notation described on page 625.
  • Finally, chapter 14 seems a stretch for an introductory programming book. This chapter touches on, but does not fully cover, the following: international character sets, portable integer types, complex numbers, and threads. The last two, in particular, would be best left to more advanced books where they could be handled adequately and thoroughly.

This book may be appropriate for self-study, but it does not belong in the computer science curriculum.

More reviews about this item: Amazon, Goodreads

Reviewer:  Edgar R. Chavez Review #: CR142557 (1410-0818)
Bookmark and Share
  Reviewer Selected
Featured Reviewer
 
 
C (D.3.2 ... )
 
 
General (D.1.0 )
 
 
Language Constructs and Features (D.3.3 )
 
Would you recommend this review?
yes
no
Other reviews under "C": Date
C (2nd ed.)
Schildt H., Osborne/McGraw-Hill, Berkeley, CA, 1990. Type: Book (9780078815386)
Jan 1 1992
C: a software engineering approach
Darnell P., Margolis P., Springer-Verlag New York, Inc., New York, NY, 1991. Type: Book (9780387973890)
Dec 1 1991
C for programmers
Ammeraal L., John Wiley & Sons, Inc., New York, NY, 1991. Type: Book (9780471928515)
Dec 1 1991
more...

E-Mail This Printer-Friendly
Send Your Comments
Contact Us
Reproduction in whole or in part without permission is prohibited.   Copyright 1999-2024 ThinkLoud®
Terms of Use
| Privacy Policy