While on this subject, would anybody recommend a book in french? It would be for my nephew who is quite smart, high-school age, and knows java an python. I would like to expose him to something different: lisp, or functional programming.
More recent than most books mentioned here, but I found it remarkably well-written. Irrespective of what happens to Scala, this book has a good chance to be useful 10 years from now.
Common Lisp: A Gentle Introduction to Symbolic Computation by David S. Touretzky is solid for learning the fundamentals of thinking in and writing lisp.
The Elements of Computing Systems: http://www.nand2tetris.org. A great, fun, do it yourself projects with subtle hints to move forward. Helps you lay a good foundation for programming.
Helped me a lot when I ventured into 3D graphics and game programming.
Any book written by Charles Petzold is an enjoyable read, though particularly the non-MS specific titles Code and The Annotated Turing. Java Concurrency in Practice (2006) is older but relevant and clearly describes concurrency on the JVM. A must read for any Java, Scala, Clojure, etc. software engineer; well-written, enjoyable, concise. Practical Object Oriented Design in Ruby by Sandi Metz is a fun read packed with…
I second this recommendation. "Code" is a very enjoyable read indeed.
Programming Pearls: Jon Bentley The Pragmatic Programmer: Hunt and Thomas The C Programming Language: Kernighan and Ritchie
Seconding Programming Pearls by Jon Bentley. Although a bit dated, I reread this book for its insight in to problem solving. It is a great primer for programming problem interviews.
Some love for - The C Programming Language - Kerninghan & Ritchie - http://www.amazon.com/The-Programming-Language-Brian-Kernigh...
I have this book at home, have read it and although it covers a lot in a short volume, I didn't get out of it as much as I did out of C Programming: A Modern Approach by KN King.
Once I bought King's book, C made a lot more sense, the book was fun to read and follow. K&R's book was, to me, less "how & why" but more "how". Pointers, in particular, is what I enjoyed more in King's book. That chapter alone made buying the book worth its money.
Design Patterns: Elements of Reusable Object-Oriented Software http://www.amazon.com/Design-Patterns-Elements-Reusable-Obje... Practical Object-Oriented Design in Ruby by Sandi Metz. http://www.poodr.com/
Maybe it's a matter of taste, but I found the GoF book really boring (and a little self hyped TBH).