"The art of multiprocessor programming", excellent book on parallel programming theory with code explanations: http://www.amazon.com/gp/product/0123705916?ie=UTF8&tag=nirs...
http://www.amazon.com/Patterns-Parallel-Programming-Timothy-...
http://www.amazon.com/Intel-Threading-Building-Blocks-Parall...
I've also been reading Clojure Programming (http://www.clojurebook.com/) to reinforce concepts from the above.
http://www.amazon.co.uk/Code-Complete-Practical-Handbook-Con...
If you like K&R books, stay the hell away from Code Complete. But make sure to read it though if you think programming is a career.
if (!b) { a();} else { b();}
change to
if(b) {b();} else { a(); }
I have not read it completely, because the first chapters inspired me to start programming (in Erlang) and I haven't gotten back to the book yet.
I invite you you to hop back into the book. I found it to be a fairly quick read for a technical book. The chapters are well motivated, and the code samples were well placed.
Since you have some additional experience with Erlang now, you might want to skip directly to the later chapters on libraries and frameworks, or on building real applications.
Also "The Reasoned Schemer", which has the same pedagogical style as the other Schemer books, but works around logic programming.
Both of those books are mind benders and I've gotten a lot out of them recently.
http://www.ccs.neu.edu/home/matthias/BTLS/
http://www.amazon.com/The-Little-Schemer-4th-Edition/dp/0262...
It's all PLI and Fortran, with lots of GOTO being harmful examples, but surprisingly much of it is still relevant. It's a quick read and interesting look at some of the problems they had back then (and some that we still create plenty of today).
pretty much the most important programming book a programmer who works with / in teams can / should / must read.
Read Refactoring first than read Design Patterns(GoF).
http://www.amazon.com/Refactoring-Patterns-Joshua-Kerievsky/...
HtDP is wonderful at what it does, and while perhaps a tad dry in writing style, it is, for me, a page turner in terms of engagement and presentation of new ideas.
Shameless plug: I just finished writing the first in a series of books about Backlogs. Good backlogs can make programming a lot easier. Conversely, horribly formed backlogs can turn coding into a death march. http://bit.ly/1fJd5Gg
Check the table of contents, it will give you an idea of what to expect from the book.
Code Complete 2, The Web Application Hacker's Handbook, Algorithms in a Nutshell, and Code.
Not to mention an Arduino book - but I'll probably get Effective Java and read it first.
+ Joy of Clojure. A recent gift[card]. I put off learning Clojure because of it's more complex syntax. I'm both glad I did, and that I have this book now that that's the no longer the case.
+ ANSI Common Lisp. Lisp was out of reach at the time when my younger self might have pursued computer programming, and realizing around two years ago how accessible it had become got me to download Lisp in a Box and then buy the used copy. Currently visiting, this book orbits in and out of the rotation with a cometary periodicity.
+ Art of Computer Programming: Volume 3, Sorting and Searching Twenty-five years ago or so I bought volume I and about 15 years I donated it to the community radio station's books sale [WMNF 88.5]. I spent about $25 dollars including shipping for used copies of the first three volumes from Amazon last year. Right now each is on a different floor. The proximate reason Sorting and Searching is by the bed: I'm taking Algorithms I on Coursera and it is the first one that really dives into algorithms. A deeper reason is that Knuth always reminds me how much more there is to know - I'm getting better at the maths, but haven't learned MIX. Maybe one of these nights.
+ Structure and Interpretation of Computer Programs I bought a "used" copy from MIT via Amazon last year. It's staggering how much is really in it that I glossed over 'reading' the free online version. It's much better than I thought, and I find myself constantly referring to it or just reading a section. It's also a reference for the other Coursera course I am taking: Funtional Programming in Scala with Martin Ordersky.
The non-programming books are from the public library:
+ How Literature Works: 50 Key Concepts. The sections are four to six pages and lightweight. Makes for something brief to read. It's the sort of book that I feel no obligation to finish.
+ Poetry of the First World War: An Anthology This book is actually why I mention the non-programming books. I don't read poetry, but I'd always seen people make a big deal about it, and there this was on the new book shelf. I see why the English make a big deal about Siegried Sassoon. I see why they make an even bigger deal about Wilfred Owen. It's potent and powerful and the bench of poets runs much deeper. It makes that war the last ancient one.
Richard Bird - Pearls of Functional Algorithm Design http://www.amazon.com/Pearls-Functional-Algorithm-Design-Ric...
Christian Queinnec - Lisp in Small Pieces http://www.amazon.com/Lisp-Small-Pieces-Christian-Queinnec/d...
The book has a few very valuable insights. For the most part it reads like a series of blog posts from a slightly experienced developer.
Interesting topics: MCMC, Gibbs Sampling
F# for C# Developers
This book seems to leave lot out in order to simplify but good starting book nonetheless
TCP/IP Illustrated, Volume 1: The Protocols, Second Edition
I wanted to know what really "connection" means. This book has answer.
An Introduction to R
I guess everyone dealing with data should know R, right?
Here's my Amazon list with quite a few very interesting books collected over time: http://www.amazon.com/gp/registry/wishlist/RXLC4WK1ZOJR
The Pragmatic Programmer - My all time favorite. Awesome book to learn best practices of various aspects in programming.
The Code Book: The Evolution Of Secrecy From Mary, Queen Of Scots To Quantum Cryptography, if you have a thing for cryptography.
In the style of other "Effective Foo" books. Excellent overview of best practices for ObjC, it's the first book I hand new developers on my team.
OpenGL Insights - Cozzi and Riccio
Game Engine Architecture (2nd Edition) - Jason Gregory
Programming: Principles and Practice Using C++ (2nd Edition) - Stroustrup
Am currently reading Think Complexity (also free): http://greenteapress.com/complexity/index.html
It's not a book about scala, it just so happens to use scala as the language to teach you how to program functionally. I've read other books that purport to do the same, they end up showing a light sprinkling of functional concepts. This book goes much deeper, and is ultimately much more rewarding.
I strongly suggest most junior programmers I work with to read Effective Java and Head First Design Patterns. To me, it's a great combination to help you write code that's easy to understand and maintain.
Looking forward to when it hits Claude Shannon
Really good introduction to computers from relays up.
While directed at the C++ crowd, I would recommend this book to any programmer, as it explains many interesting concepts and idioms that are not C++ specific.
If you are an experienced C programmer you may end up skipping large portions of it.
In my opinion the book is mostly targeted at people that have had some C experience in the past (probably long ago in school) and have since moved on to newer languages. FWIW I read (and enjoyed) the book cover-to-cover, and I mostly do C# in my day to day work.
Great look at under-the-hood of what happens when a program runs.
http://javascriptissexy.com/learn-intermediate-and-advanced-...
Fun to read, solidify knowledge of Scheme.