Here's a bunch of my favourite programming books. I own a copy of almost all of these, and they've proven valuable.
C++ Programming Styles and Idioms, James Coplien.
Cormen, Leiserson, Rivest: Introduction to Algorithms
This hardcover book is a gem. The examples are pseudo code which I consider to be an advantage, because translating themn into your favourite language makes a good exercise, and the book transcends language ( like it should ). It's also hardcover. The book covers several algorithms and structures including lists, queues, stacks, as well as more advanced structures like B-Trees, graphs, and red black trees.
In depth tips on C programming, and some geek humour. Just
don't try explaining the jokes to your grandparents.
I'm not a great fan of SAMS, but this one's a rare gem. One of
the more advanced C books. I purchased it because one of the
authors is a regular guru on comp.lang.c++ and he
(not surprisingly) recommends it. This book is very
broad. Topics include optimization, memory management,
finite state machines, algorithms (including tries,
and AVL trees), expression parseing, embedded systems,
new C99 stuff ...
A very interesting book. And possibly the only advanced C book
that covers this much material (actually, there aren't that
many advanced C books on the market).
Excellent introductory textbook on the C++ language. This book is
also fairly comprehensive -- it includes a reasonable coverage
of all the basic language features.
I can swear by this book since it's the book from which
I learned C++.
Eckel's books have become very popular. His C++ book is
freely available on the web.
I haven't read it, but I have his java book,
which is a gem. Take a look at the one on the web, and buy it if
you like it.
A C++ textbook that takes an innovative and nontraditional
approach by teaching C++ without ``teaching C'' first.
This book adopts a relatively rapid pace, it's more like a second
text than a first.
This is one of the few beginner books I've seen where all the
code in the book really looks like C++, and not some bizarre
prehistoric C-like dialect.
Another thing I like about the book is they teach just the right subset
-- rather than asking the reader to rote-memorise the details
of every STL class, they focus on the important ones (mostly
map, list and vector).
Another text covering the fundamentals of the C++ language. The
style is relatively terse and it is not laid out like a course.
This is more of a reference than a tutorial.
Get this as a second book, but not a first.
Written by the creator of the C++ language.
If you buy this, make sure you get the hard cover edition !
My Favourite C Books
My Favourite C++ Books
Introduction
Reference Books
The author is in danger of upstaging Bjarne with this book. A
comprehensive but readable book about the standard C++ library.
Good book containing 50 valuable guidelines to help you write better
code.
This one is more advanced (and perhaps less essential)
than the first, and introduces
some programming idioms ( smart pointers, reference counting, multiple
dispatch), so it's more than a good-style manual.
This one has 35 tips (though the book is longer).
Herb Sutter, Exceptional C++
It's probably unfair to call this a style guide. It's possibly
the
most C++ advanced language book available. Even experts can
learn from it. It discusses the fine
points of very sticky issues such as reference counting, and
dissects examples of code in great detail. You should have a
good
knowledge of the language before you even start with this one.
What I like about it is that it's deep and concise. The sections
are self contained, so it's easy to read in that you can just
open the book at a random location and read.
See also: C++ Strategies and Tactics, Robbert Murray and
C++ Programming Style, Tom Cargill. I haven't read these,
but they get very good reviews.
This book is a little dated, but even today, it is one of the
most readable introduction to what are now dubbed ``patterns''.
The book explains several idioms, including iterators, adaptors,
envelope-letter classes (handle-bodies),
virtual constructors, and a very in-depth exploration of
the propotype pattern (he uses the word ``exemplar'').
Also explained are traditional idioms such as reference
counting and smart pointers.
The definitive reference on patterns. Great book, but not very
easy to read. Get something with more examples as a companion
(for example Coplien and/or Pattern Hatching)
This is a companion to
design patterns. It is more concrete and example-oriented.
It looks very readable.
Short, concise, but very readable/gentle introduction to the language.
I learned from the Orwant book, but this book also deserves mention.
This is a nice introductory text book. It goes straight into the perl
language and explains to the user what perl ``looks like''. This is
nice, because a lot of C programmers learn the perl syntax, but end up
writing perl code that looks like C instead of perl. The book has
a fair degree of both breadth and depth.
This is the authoritative reference on the perl language, by the author.
The book has a very nice section on good style at the back of the book.
This is a hybrid between a reference and a tutorial. Someone with programming
experience should be able to learn from the book immediately. Great
book, but beginners might want to read Learning Perl or
Perl 5 interactive course first.
This is a perl ``example book''. Each example is accompanied by some
discussion. This is a good companion to other perl books.
Style Guides
Advanced: Idioms and Design Patterns
My Favourite Perl Books
Before you buy any books, start with my webpage.
Well written book that explains how to use these utilities. It is a little biased towards awk, but sed also gets very good coverage. There are some that would argue that perl obsoletes both of these utilities, and would hence question the need to become experts with awk and sed, but those who wish to learn about these programs can learn a lot from this book.
Excellent introduction for those who wish to learn shell scripting. Of course, there's also my webpage.
This is a very good introduction to Linux development. It covers a bunch of the standard APIs. Discusses dbm, curses, sockets, semaphores, threads, GTK+ as well as tools like make, shellscript, and cvs.
Haven't read this yet. I just purchased it because I like the authors.