I've really been enjoying The Joy of Clojure (http://joyofclojure.com/) -- note that there's a nearly-finished 2ed in PDF form if you buy the early access version.
I've also been reading Clojure Programming (http://www.clojurebook.com/) to reinforce concepts from the above.
It depends heavily on what stage of your career as a programmer you are.
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.
Stroustrup's "A Tour of C++" is a great overview of C++11 and modern C++. It's not very long and worth a read to see what's new in the C++ world. The audience is aimed at people who already know C++ but want to know what's new with the latest version. I've been doing a lot more with C++11 recently and am really impressed with the language--dare I say C++ is actually fun to use.
I don't think it's going to help that much if you're new to the language. You probably want to cram something more beginner friendly like Thinking in C++: http://mindview.net/Books/TICPP/ThinkingInCPP2e.html It's a great book that helped me really start to grok C++ long ago when I was new to the language.
I'm pretty proficient in a ton of other languages, so I'm hoping I have a pretty good head start and will be able to follow the book, but I'll read Thinking in C++ in the meantime until my order arrives. Thanks for the suggestion!
Came here to mention this. I've also found it to be a great resource for understanding a lot of the design decisions in Rust (if you're into that sort of thing), which are often informed by similar decisions in recent versions of C++ that "Tour of C++" discusses in detail.
I've been reading Real World Haskell recently and loving it. It does a fantastic job of blowing your mind while simultaneously showing you how to apply Haskell to real-world problems.
Actually I didn't like it at all. It's been a few years, but it totally put me off learning Haskell.
Doing some small steps again now, but although I'm usually all for real world applications first (instead of doing the millionth factorial function) - but it did not make much sense to me didactically.
I read (not all of it, maybe 50% of it) "The art of multiprocessor programming" a couple of years ago and I agree, its an excellent book. I have a handful of books on the topic and I find this to be my favourite.
The only ones I can think of off-hand are these two. The second one isn't really about parallel/concurrent/distributed programming per se, but rather about using Intels Threading Building Blocks - good book if that's what you want to do, but not very useful if not. The first book is interesting and covers a lot of ground (covering general techniques and algorithms as well as specific implementations with OpenMP, MPI and Java's facilities), but I liked Art of multiprocessor programming more, probably because it has a more beginner friendly teach everything from the very beginning approach.
I recently went through the later chapters of The Little Schemer again. I still find it incredibly challenging and awesome. As many have said, this is a great book to teach you to think recursively.
Not trying to sound cute, but The Elements of Programming Style by Kernighan and Plaugher (1974). Just read this last week during a day of plane travel.
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).
"Refactoring" is next on my list, but I started with "UML Distilled", and am currently working on "Design Patterns", partly in preparation for "Refactoring" (and "UML Distilled" was partly in preparation for "Design Patterns").
Currently reading Programming Pearls by Jon Bentley. Interesting small case studies that gives insight on how to tackle problems and think about programming.
"C# In Depth, 3rd edition" by Jon Skeet. I had been falling behind on the new stuff added to .NET and C# and this is a good way to get back on the curve.
I'm half way through this and slightly disappointed with it. I thought there was too much material on upgrading from early versions that have been obsolete for a long time. Hopefully the second half is better.
This is the most disappointing programming book I have ever had a misfortune to buy. If you ever read any UML / Rational Software books - this is right up there in terms of sucking all joy out of programming, putting a blue collar and tie on you and then strangling you to death with soul-less trivialization of the software creation process. Horrible, horrible book.
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.
JavaScript: The Good Parts. Made me see JS in a much more elegant way. Coding JS is not trivial. I did use JS in webdev in general, and APIs. But really, I would have never known the mysteries behind it such as prototypal inheritance.
Clean Code, by Robert Martin. Excellent book that dives in deep on how to write solid code. It's like having the ultimate code review in book form.
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
Been reading this one on my Kindle app, but it seems very "entry level" so far. You know of any good Intermediate to Advanced JS books out there? I have Test Driven JavaScript Development by Christian Johansen that I've dug into a bit, but have yet to finish (it's got some more "advanced" stuff I guess, currying, etc).
I highly recommend "Secrets of JavaScript Ninja by John Resig and Bear Bibeault. It tremendously help me level up my JS skills.
http://www.manning.com/resig/
A little more than just programming, but just finished Ilya Grigorik's new book, "High Performance Browser Networking" (available free online). I learned a lot about Javascript/HTML loading and execution that I had never even thought about.
Effective Java. A very succinct collection of wonderful practices and ideas on how to code great software that you can finish in a couple of days, even if you are on a working schedule. Don't mind the "Java" in the title; I read the book regularly and it applies to pretty much any language capable of some OO.
Check the table of contents, it will give you an idea of what to expect from the book.
Have you tried C Programming: A Modern Approach? It is very good with C99 but there is no C11. My only problem is that it spends too much time for people who are new to C.
I haven't read the book you mention, but regarding a book that does cover c99/11, I really enjoyed: 21st Century C: C Tips from the New School
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.
I also read this earlier in the year. I used Erlang in a few projects at university, but never formally learned much about it beyond what I needed.
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.
91 comments
[ 3.0 ms ] story [ 159 ms ] threadI've also been reading Clojure Programming (http://www.clojurebook.com/) to reinforce concepts from the above.
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.
pretty much the most important programming book a programmer who works with / in teams can / should / must read.
http://book.realworldhaskell.org/read/index.html
"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...
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).
Read Refactoring first than read Design Patterns(GoF).
http://www.amazon.com/Refactoring-Patterns-Joshua-Kerievsky/...
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(); }
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.
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
http://javascriptissexy.com/learn-intermediate-and-advanced-...
[1]: https://leanpub.com/javascript-allonge/read
[2]: http://shop.oreilly.com/product/0636920027713.do
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.
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.
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.
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.