The book reviewer's lot is not a happy one. This book is written by a respectable lecturer at a local University almost within my sight as I write. I wish I could pretend that I had never seen this book but I must cast aside local prejudice and be as honest as you expect me to be.
The author declares that he is writing for students with no prior knowledge of programming who are pursuing an ACM-recommended curriculum for CS 1. Please keep this in mind.
First a quick check reveals that despite the title this is basically a book about C with three chapters on C++ tacked on the end. Internal evidence suggests that the author's C++ is circa 1990 (he lists 16 extra keywords added to the 32 of C). Anyone with the slightest idea of the size and complexity of C++ will realise that 127 pages onC++ for a readership that needs 499 for C is not going to cut it. So let me ignore the C++ element and focus on the rest.
Chapter one is about the programming environment and either needs serious revision or complete removal. What else can you say about material that claims that a 360Kbyte 5¼" floppy disk is a popular type? This chapter reads as if it was written a dozen years ago with little maintenance since.
Let me backtrack to the Preface where among the litter of typos (e.g."All the programs written for the examples and die answers up to and including..." I have no idea what kind of answers were intended.) we find an assertion "In fact any C compiler that is compliant with ANSI/ISO 9899-1990 C can be used for the implementation of the programs found in the first fifteen chapters." Well I have news for the author any compliant compiler would be required to issue at least one diagnostic for every one of his example programs. Neither C nor C++ has ever allowed
void main(). That is a minor detail that would not worry me much except that it is indicative of an author who simply has not done his homework properly.
Treated as a book about very simple programming using C as the language for examples it is not that bad but I do wish authors would learn and understand the standard coding conventions. This author completely ignores the standard that pre-processor identifiers should be entirely in uppercase.
Then there is a multitude of little things that suggest that he really isn't a fluent C user. For example, he uses
gets()rather than the much safer
fgets(), he does not use
puts()for simple strings but prefers the more complicated
printf(). Then we have such lines as:
#define read "r"
#define write "w"
No experienced C programmer would even think of writing such dangerous pre- processor directives. This book needs two things: a substantially redefined objective (remove the C++ altogether) and then have the rest thoroughly reviewed by a several genuine technical experts. To be honest I doubt that it is worth the effort.
OK I have seen much worse books on C but there are also quite a few much better ones. In addition I am far from convinced that the current generation of students should be so focused on structured design.