Comments on C and C++
Books and Internet Sites

Note: The comments below represent my personal opinion about the books below. Books that are mentioned on this list are considered by me as good books in general. More details about them can be found on my pages C and C++ sources and Some Textbooks. Most of them fall into my categories of Recommended or Highly Recommended. You will easily notice that these are characterized by having a very short comment.
A few books have found their way here because they have important features, despite the fact that I think they have a few serious faults. Just read the comment till its end. Nevertheless, I do not consider them as bad books.

My comments about bad books can be found here.



Last Sep. 5, 2003.



Comments on Books:

The C programming Language, by the father and the father of C,
is considered to be "The Bible of C".
What more can be said ? Highly Recommended
Read first paragraph here.

C Programming FAQs clarifies the practice of writing programs in C,
sometimes expanding a short explanation in K&R2.
If you want to know why your teacher insists
that main() returns int (and not void), you'll find it here.
And if your teachers do not insist on it, tell them about this book. Highly Recommended


The C++ Programming Language by the father of C++,
is considered to be "The Bible of C++".
It nicely combines the syntax and semantics of C++
with a lot of information about The Right Way to Use C++. Highly Recommended


The Design and Evolution of C++ is a very nice and interesting presentation of how C++ had grown. Its only drawback is that C++ has been developed tremendously since the book was published. Recommended


Effective C++ gives many useful examples and elaborated information on how to correctly develop C++ software.
In motivation, it is like the next book, but the presentation is different.
They are both very good and, in some sense, complementary one to another. Highly Recommended


Industrial Strength C++ gives many useful examples and elaborated information on how to correctly develop C++ software.
In motivation, it is like the previous book, but the presentation is different.
They are both very good and, in some sense, complementary one to another. Highly Recommended


C++ FAQs is yet another way to help you designing and implementing C++ software.
470 questions and answers about the right (and wrong) ways to use C++.
Having this on top of the previous two books is not redundant.
It has a shorter Internet version, that is updated from time to time. Highly Recommended
Beginning Dec. 2002, I maintain a mirror site for c++ FAQs,
in order to ease connection for Technion students and for all interested middle-easterians.


Ruminations on C++ is a collections of articles about ideas of OOP and their implementations in C++ programs.
It is very nicely written. Recommended







Comments on TextBooks:

"A Book on C" is the guiding book (not "the text book") for the basic courses on C at the CS faculty at the Technion for some years by now: It passes the guidelines that I have expressed, and it presents the topics of the language in an order that seems reasonable to the lecturers leading these courses. We concentrate on chapters 1-6, with the addition of dynamic memory allocation and primitive structures if time permits.

Errors: (page numbers are related to 4th edition)


"Pointers on C" is a good textbook that takes you deeper into the C language capabilities and pitfalls.
Unfortunately, it spends most of chapter-17 describing an archaic way (that I consider to be wrong) of ADTs implementations, and only the last 5 pages (sec.17.5) to mention a "correction".


"C++ Primer" is considered one of the best textbooks on C++.
The 3rd ed. is an extended version of the 2nd ed. and is ANSI-C++. Highly Recommended
A review at ACCU (Sep. 5, 2003)
A Critique (Sep. 5, 2003)


"Thinking in C++" seems to be a good book (I have not looked at it thoroughly, yet) but quite lengthy (indeed, C++ is a big language, unlike C). Note that volume#2 is being developed, and not final.


"C++ for Java Programmers" is an introductory book about C++, that bases its explanations and examples on the reader's knowledge of Java. I had the opportunity to review the first half of the book and contribute some comments and corrections.




Comments on Deitel x 2 book (C++ How to Program) where moved to here.


"Data Structures and Program Design in C++" is a good textbook about the ideology and OOP strategies that should be employed while using C++.
However, its coding style is unfortunate, to my taste.
Here is the simplest example, taken from page 61:
The original code is
    Error_code Stack::pop()
    {
      Error_code outcome = success;
      if(count == 0)
	outcome = underflow;
      else --count;
      return outcome;
    }
But, it is my view, that the following implementation is conceptually better:
    
    Error_code Stack::pop()
    {
      if (count == 0) return underflow;
      --count;	// No else
      return success;
    }
    
In addition, the book usually uses assignment on data-members in constructors,
rather than initialization (e.g, pp. 62, 90, 125, 631).
This should be considered a potential bug (and sometimes it is indeed a syntax-error) and is almost always a redundant (sometimes severe) overhead.


© 1998-2003 by Yechiel M. Kimchi. All rights reserved.
http://www.cs.technion.ac.il/users/yechiel/CS/Comments.html
Created: 1998/10/13       Last updated: 2003/09/05 14:25 IDT

































































This page has been visited [counter] times since 1999/09/21.