A good c/c++ algorithms / design patterns book

I

Ian Collins

CellDivider said:
Hello folks,

currently I'm looking for a good books that gives an overview of
useful c/c++ algorithms and design patterns, in the manner of "what's
the most efficient way to implement <often used function> ", singleton
pattern etc. pp. . It should cover as much as possible.


How good is this one?

http://www.awprofessional.com/bookstore/product.asp?isbn=0201633612&rl=1
It is the definitive book on design patterns.
If you know better suggestions, please tell me!
http://accu.org/index.php/book_reviews
 
J

James Kanze

Very well. Now all I need is a good c++ algorithms book.

Algorithms are pretty much independant of the language; the
reference is Knuth, and he presents them in assembler.
Otherwise, Sedgewick: there are versions in Pascal, C and, I
think C++ (but from what I hear, the C++ is really just rehashed
C). Don't get hung up on the language the book is officially
in; one of the best books I know about programming in C is
"Programming Tools in Pascal". (Although dated, it's still
worth reading today.)
 
C

CellDivider

I can only find "Software Tools in Pascal" by Kernighan, if that's the
one you mean. Or do you mean "The C Programming Language" by Kernighan
instead (because this one looks like a pure Pascal book)?

The Sedgewick seems to be a good hint, thanks.
 
G

Gennaro Prota

I can only find "Software Tools in Pascal" by Kernighan, if that's the
one you mean. Or do you mean "The C Programming Language" by Kernighan
instead (because this one looks like a pure Pascal book)?

Pretty sure that James meant the former. It's by Kernighan and Plauger
and is a rewrite of "Software Tools":

Software Tools (1976) ISBN: 020103669X
Software Tools in Pascal (1981) ISBN: 0201103427

Apologies if it bothers you that I answered this, James. Just trying
to take some of your replying work off :)
 
J

James Kanze

On 26 May 2007 03:12:58 -0700, CellDivider wrote:
Pretty sure that James meant the former.

Yes. And it is "pure" Pascal (except that the authors treat
Pascal as much like C as possible). That's just my point: the
language isn't always that important---reading it will improve
your C, and even your C++, considerably, even if it doesn't
contain a line of C.
It's by Kernighan and Plauger
and is a rewrite of "Software Tools":
Software Tools (1976) ISBN: 020103669X
Software Tools in Pascal (1981) ISBN: 0201103427

Yes. The original (which I've not read) was in RatFor, a
Fortran preprocessor, and included the code for the
preprocessor.

It's interesting to note the dates. As late as 1981, two of the
world's leading C experts felt it necessary to write in Pascal
in order to publish; C wasn't yet widespread enough. (Which
rather surprises me; I was working professionally in C by
1982-1983, and I had the impression that I was rather late
getting into it.)
Apologies if it bothers you that I answered this, James. Just
trying to take some of your replying work off :)

There's nothing to apologize about. Anyone who has anything to
contribute is always welcome.
 
J

Jerry Coffin

I can only find "Software Tools in Pascal" by Kernighan, if that's the
one you mean. Or do you mean "The C Programming Language" by Kernighan
instead (because this one looks like a pure Pascal book)?

The Sedgewick seems to be a good hint, thanks.

At:

http://tinyurl.com/39nxcj

There's a thread that talks about books on algorithms. A short summary
of my comments from that thread is that I would (strongly) recommend
_Introduction to Algorithms_ by Cormen, Leiserson, Rivest and Stein, or
_The Art of Computer Programming_ by Knuth, but I recommend (strongly)
against any of Sedgewick's books. His coverage of algorithms is quite
poor, and in the language-specific versions (e.g. _Algorithms in C++_)
the use of the language is even worse.
 
J

James Kanze

There's a thread that talks about books on algorithms. A short summary
of my comments from that thread is that I would (strongly) recommend
_Introduction to Algorithms_ by Cormen, Leiserson, Rivest and Stein, or
_The Art of Computer Programming_ by Knuth, but I recommend (strongly)
against any of Sedgewick's books. His coverage of algorithms is quite
poor, and in the language-specific versions (e.g. _Algorithms in C++_)
the use of the language is even worse.

Interesting. I learned algorithms from Wirth---the second
edition, which used Modula 2 for examples. Except for very poor
typography (a whole line dropped in one example program, for
example), I found it excellent. But I have Sedgewick as well
(the C version), and I have no real complaints. It's more
complete (i.e. covers more algorithms) than Wirth, even if the
explinations aren't nearly as clear. Knuth is, of course, the
absolute reference, but 1) it's dated (or at least the editions
I have are), and 2) the sample code is in assembler, which makes
it somewhat more difficult to follow on the whole. (On the
other hand, the descriptive text is about the best you can
imagine. Knuth is one of those rare people who are both a
technical genius and a genius with words.) The result is that
while I have all three, when I need to look up a standard
algorithm quickly, I'll go to Sedgewick first.
 
G

Gennaro Prota

Yes. The original (which I've not read) was in RatFor, a
Fortran preprocessor, and included the code for the
preprocessor.

It's interesting to note the dates. As late as 1981, two of the
world's leading C experts felt it necessary to write in Pascal
in order to publish; C wasn't yet widespread enough.

Hmm, is that the reason? Perhaps P.J. Plauger could read this and
answer in person (but I guess he rarely reads the unmoderated group).
 
J

Jerry Coffin

[ ... ]
Interesting. I learned algorithms from Wirth---the second
edition, which used Modula 2 for examples. Except for very poor
typography (a whole line dropped in one example program, for
example), I found it excellent. But I have Sedgewick as well
(the C version), and I have no real complaints. It's more
complete (i.e. covers more algorithms) than Wirth, even if the
explinations aren't nearly as clear. Knuth is, of course, the
absolute reference, but 1) it's dated (or at least the editions
I have are), and 2) the sample code is in assembler, which makes
it somewhat more difficult to follow on the whole. (On the
other hand, the descriptive text is about the best you can
imagine. Knuth is one of those rare people who are both a
technical genius and a genius with words.) The result is that
while I have all three, when I need to look up a standard
algorithm quickly, I'll go to Sedgewick first.

That's largely why I posted a link to the entire thread instead of only
to one of my own posts -- while I think his books are quite poor, there
are clearly others who disagree, and I didn't want to give the
impression that my own opinion was the only correct one, or anything
like that.

To some degree any book on algorithms and data structures is something
of a tradeoff between depth of coverage, breadth of coverage, and sheer
size of book. Perhaps rather than a simple "I recommend [for|against]
this book, it would be more useful to attempt to rate the books on a
number of dimensions, and let the reader draw their own conclusions.

K = _The Art of Computer Programming_, Donald Knuth
C = _Introduction to Algorithms_, Cormen, Lieserson, Rivest and Stein
W = _Algorithms + Data Structures = Programs_, Niklaus Wirth
S = _Algorithms {in [C|C++]}_, Robert Sedgewick

V Area \ Book -> K C W S
Depth of coverage 10 8 6 2
Breadth of coverage 5 10 4 8
Clarity of text 10 8 9 3
Approachability 3 5 10 6

Of course, these are my subjective opinions (on a relative scale of 1-
10, in case that wasn't obvious). I certainly don't mean to imply that
they're right and everybody else's opinions are wrong. Rather, my point
here is mostly to provide at least some attempt at information about the
books themselves, separate from my opinion about the relative importance
of each area. I think James and I probably agree for the most part about
the ratings of the books in the individual areas, and mostly differ in
the importance we attach to those areas.

Likewise, if anybody wants to suggest things like 1) different areas to
consider/rate, 2) different ratings for each area, or 3) ratings for
more books, those would undoubtedly be useful additions -- perhaps we
can turn this thread into a source of helpful guidance instead of mostly
unexplained opinions.
 
J

Jerry Coffin

[ ... ]
Hmm, is that the reason? Perhaps P.J. Plauger could read this and
answer in person (but I guess he rarely reads the unmoderated group).

It's been a long time, so I'm not sure, but if memory serves, in the
foreword or introduction, they talk a bit about this. If I'm not
mistaken, it was mostly that at the time C and UNIX were still
sufficiently closely bound that if you had one, you probably also had
the other. That being the case, if you had C you probably also had (more
complete versions of) the tools they were presenting.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,744
Messages
2,569,479
Members
44,900
Latest member
Nell636132

Latest Threads

Top