Once in a while someone will ask me which book is best to start learning programming. The fact is that I do not know because I'm already an advanced programmer and it's rather difficult for me to get back to the basics (it feels like a waste of my time, sorry...)
That being said, at Made to Order Software, we've mainly been a C++ shop. We also do a lot of C, PHP, JavaScript and touch many other languages as required by the tasks we perform (bash, cmake, perl, C#, Java, etc.)
That being said, I wanted to underline some of the best C++ books available today. Especially, in the last few years (since 2011, really) C++ has evolved very quickly. It now includes features such as file handling, threadings, real smart pointers (i.e. not auto_ptr<>(), yuck!) and many great improvements to templates such as variable lists of arguments.
As I mentioned, I'm not really at that stage anymore and I don't really take the time to check out books to learn C++. I already know it. That being said, this is one I've heard some good about so I think it is well adapted if you are a beginner and want to learn to become a C++ master.
The author is big with Visual C++ (the Microsoft C++ development environment) so you may get a few entries that do not apply to Linux. Still certainly a very good read.
The newest edition includes information about C++14 and C++17.
Click the book covers to go to Amazon and review these books further. I'm an Amazon affiliate and may receive a commission as a result of a purchase. Thank you.
Since boost C++, many very advanced and very useful templates were invented by C++ developers. Boost included shared pointers (invaluable!) but also various templates to help in metaprogramming. For example, it is now very easy to check whether a template type parameter is a signed integer.
All of these C++ Templates and more were added to C++11, C++14, and C++17. This gives us incredible tools to not only write more effectively, but also increase chances that our code will work as expected (at least, much of it I use to make sure things work as expected.)
This book gives you a very deep view in the new world on C++ templates. It has grown so much and so quickly, that I do think a book was necessary and now we have it.
One chapter which I particularly like is the one about SFINAE, Substitution Failure Is Not An Error. This particular C++ template functionality allows for testing all sorts of things at compile time and really optimize your code.
By the way, although in the old days C was faster, now that we have all of these super advanced features in C++, it is rare that someone would be able to write code that runs faster in C. Using templates and a large amount of inline code, C++ is capable of optimizing a very large number of calls to just a few lines of assembly code. This is really powerful.
Comments
Post new comment