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)
- Operator precedence tables misplace postfix ++ and --
- Operator precedence tables do not have the casting operators
- It claims that an array-name is a constant pointer (p. 253)
See
C-FAQ,6.9.
- It suggests to step back from the beginning of an array
in order to simulate an array that starts with index 1
(p. 262, p. 575) in the line of
double *a = (double*)calloc(...) - 1;
See
C-FAQ,6.17.
"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
times since 1999/09/21.