Search in Book Reviews

The ACCU passes on review copies of computer books to its members for them to review. The result is a large, high quality collection of book reviews by programmers, for programmers. Currently there are 1949 reviews in the database and more every month.
Search is a simple string search in either book title or book author. The full text search is a search of the text of the review.
    View all alphabetically
Title:
C By Example
Author:
Greg Perry
ISBN:
0 7897 2239 9
Publisher:
Que
Pages:
512pp
Price:
£17.99
Reviewer:
Yechiel M. Kimchi
Subject:
beginner's c
Appeared in:
12-5
This is not the worst book on C I have ever seen, but it is the strongest competitor for this title. The author may know how to program and may know C and even may know ANSI-C, but none of these is shown in his writing of this book.

In order to make this review short (the book does not deserve much of your time) I will concentrate on citing erroneous statements from the book. I shall leave the criticism of the coding in the book to my Web-page.

  1. The author claims to teach ANSI-C (p. 11). Apparently, the type
    signed_char
    (and many more such in the table on p. 38) and the
    FILE* object stdprn
    (p. 293), to name a few, were kept secret from me.
  2. The author seems to have missed his class when the if-statement was taught. I thought I was picking at him when I noticed that he wrote on p. 129: 'The else-statement ...', but when I saw that he claims, on p. 144, that 'Any valid if C statement can be a
    conditional_expression
    ...' I relaxed. Since the latter is false when the if-statement has a loop inside it, he may have missed the class on loops too.
  3. The author has many misconceptions about the increment/decrement operators. For example (p.147): 'You can apply these operators only to variables.' Hmm... what about
    ++*(p+3)
    ?
  4. p. 248: 'Never pass a global variable [as a function argument, YMK] because C will get confused.'
  5. p. 412: 'Local variables are reserved before your program ever begins, just as global variables are.'
  6. p. 413: 'A
    void
    pointer is a special kind of pointer that you must typecast.'
  7. p. 414: 'Remember that a pointer is no different from an array name.'
For the cherry on the pie; at the end of each chapter, the author gives a 'What's next' paragraph, explaining the coming subject. Here is how the 'What's next' of the last chapter begins (p. 457); 'Next, you should begin making money at your career of C programming. Seriously, you now know as much as most C programmers know about the C programming language.'

Indeed, I cannot prove that these statements are false, since it may be the case that 'most C programmers' have acquired their knowledge from this book. Moreover, bad programmers are able to make money, a lot of it - if they work for the right company. However, textbooks should aim higher, shouldn't they?

I shall conclude with the following: At the beginning of the book, in the section 'About the Author', it is written (p. xi): 'He is known for his skills at bringing advanced computer topics down to the novice's level.' I would have shortened this statement to be read: 'He is known for bringing his skills down to the novice's level.'

More examples of errors can be found on my pagehttp://www.cs.technion.ac.il/users/yechiel/CS/BadBooksC+C++.html#PerryCbyExample