I'm on the last chapter of "Programming -- Principles and Practice Using C++" by Bjarne Stroustrup. The main thing I learned for my first book on C++ is that a programming language is meant to support programming principles, ideas, and ideals and not vice versa. I want a book that will teach me programming techniques, not just language features. What book should I read next? Should I read a book on advanced C++? I am asking you from now because I want to have time to get the new book before I finish the old one so that I can start it immediately after I finish the old one. If it will help you to recommend me a book here's a more detailed back story:
I'm just finished my first semester of CS at university. It took me a little less than 2 years to finish the book. I read it moderately slow in order to understand every concept. I want to become a programmer. I have around 5 years more of university (bachelor's 4 then masters 1.5). So that means I have 5 years more to study programming.
The C++ Standard Library: A Tutorial and Reference (2nd Edition) by Josuttis.
(C++11 has changed the way we write C++ code; this book also presents that new style.) http://www.amazon.com/dp/0321623215/
Isn't that just a manual on the standard library? Before starting "Programming -- Principles and Practice Using C++" I was reading "C++ Programming for the absolute beginner". There they presented pointers not explaining what they are used for. In the book that I am reading now I learned what pointers are used for, such as implementing data structures. That's why I really stress on a book on programming techniques. I want to make sure I start reading the right book.
> Isn't that just a manual on the standard library?
No, it really isn't just a manual. The book goes far beyond being a printed equivalent of the reference section of this site, or (the more technically precise) cppreference.com. Online resources with hyper-links are actually better than a book for reference.
This is more of an in-depth tutorial; it does a good job of explaining and illustrating the new way of programming in C++ that came with the new standard. It fills the gaps in Stroustrup's book (published in 2008).
How about Object-Oriented Programming in C++ by Richard Kalin. A bit pricy, but worth it. The 2nd edition is available from Amazon (used) from $2.95. New $129.00. I still use the first edition that I bought back in 1995, and although outdated, I find the principles to still be very valuable. I am an old 'C' programmer (various assemblers before that) and fought C++ in the beginning this book got me over that hump. Now, when it comes to any systems programming, It is always the language of choice.
Also, especially if you are interested in templates and good class construction practices, I highly recommend Effective C++ by Scott Meyers - this is quite a bit more advanced, so buy it with that in mind. Well worth the effort. If you get through that one feeling like spring has sprung, you might want to go on to 'More Effective C++' also by Scott.
For your library reference, I can recommend John Aho's 'Dragon' book and Holub's book 'Compiler Design' both are books with compiler design in mind but with many algorithms that are valuable for effective large scale data processing (mega file indexing, etc.) in mind. I still to this day use the verbatim hashing algorithms from Aho's book.
One more reference I turn to is 'Mastering Algorithms in 'C' by Kyle Loudon - Mine's quite old, but I still grab it off the shelves at least once a month. Published by Tim O'Reilly
This belongs more in the lounge, but By the way, Tim O'Reilly is the founder and CEO of O'Reilly books. He started in a small building in Fresh Pond (Cambridge) Massachusetts (where I bought my first O'Reilly book). He's my age, and since his first installments (The X windows series for Unix - long before Microsoft existed), He also founded Foo Camps (see Wikipedia) which holds a non-conference every year. You sound like you are on the right track to becoming an excellent programmer because you are inquisitive, and you just might like to go to one of these.