I recently bought Effective C++, 3rd Edition by Scott Meyers, and have enjoyed reading it. I had read the previous edition of this book, as well as the More Effective C++, but things have changed considerably in the whole C++ landscape, which has changed many of the best practices described in the previous editions.
While reading Effective C++ I also realized that my C++ language knowledge is probably still higher than my Python language knowledge, even though I haven’t used C++ much in the past four years. Before I went to work for OSAF, I had somewhat irrationally thought that C++ would be the language that I would use primarily for the rest of my life. It is a relatively difficult language to master, and experts in the language can expect to command respectable salaries. So it is no wonder I made a big investment in learning C++ well. I started in the University of Jyvaskyla with C++ programming class, then read C++ Primer by Stanley Lippman, followed by the C++ Programming Language by Bjarne Stroustrup. When I joined Citec I needed to program with MFC, but unfortunately I don’t remember the title of the great book I read back then. I then followed with the Effective C++ series and Thinking in C++ (free ebook) by Bruce Eckel, which I didn’t actually find that useful after the Effective C++ series. Around this time I also found Design Patterns by the GoF, which I had originally heard of when taking object oriented programming class at the University of Kent at Canterbury. I also read Object-Oriented Analysis and Design by Grady Booch when at Kent. When I started on the Mozilla code I got my hands on Effective COM by Don Box.
After joining Netscape (R.I.P.) I got pretty interested in security, and quickly gobbled Building Secure Software by John Viega and Gary McGraw and Software Security by Gary McGraw. After joining OSAF I read Secure Programming Cookbook for C and C++ by Viega and Messier, Writing Secure Code by Howard and LeBlanc and 19 Deadly Sins of Software Security by Howard, LeBlanc and McGraw. There are probably other books I am forgetting, but all the aforementioned books give an extremely good understanding of the C++ language, its pitfalls and effective usage. There is quite a bit of repetition in the security books, but all of them offer something new and interesting, and some repetition is actually good for you…
When I compare this to my Python reading it is pretty pitiful. I started with Learning Python by Mark Lutz and David Ascher, then read Python in a Nutshell by Alex Martelli (which I didn’t like much) and then Python Cookbook. So why did I not read more Python books? When I first started at OSAF I had to quickly ramp up with the language, but I also had to ramp up with cryptography and refresh on some mathematics, so I got a little burned out reading work-related books. There also aren’t that many books on Python, compared to C++. And finally the language itself is simpler, meaning you don’t feel the need to continuously learn about the language just to be productive and proficient with it. I would really like to find a book dedicated to security problems concentrating on Python, as well as some equivalent to Effective C++ series for Python (the Python Cookbook comes closest).
But I think I have finally found the joy of reading about computer programming languages again, so I am starting to look at improving my Python knowledge as well. There seem to be reasonably good selection of books on web application development with Python, so I believe I will start there. If you have any recommendations on Python books, please leave a comment.