Table of Contents
As you might read in my recent post - coding without Google - I’ve started learning to program mostly from books. In the beginning, I read them from cover to cover (assuming I could understand them!) and recreated examples. It was an excellent time! In the post, I’d like to share my list of important books that taught me the base of my knowledge. Maybe you’ve shared similar titles along your learning path?
1. C++ in 24h
I’ve seen that book many times on a shelf of my local bookstore. One day, after a discussion with my friends, we’ve bought the book. One book for three young kids. I didn’t know when I got my turn, but in the end, the book was mine and my friends sold theirs ‘shares’ to me.
Each lesson was done very well, and step-by-step one could get most of the basic concepts of C++. In chapter 19 (in the 19th hour to be correct) there was a topic of linked lists. The described problem was not only a C++ thing, but it was also an area of data structures and algorithms. The chapter was hard to get through. In the end, I’ve managed to understand lists, and I was proud of myself!
I’ve seen that the book is a bit outdated at the moment. The 5th edition is from 2011 and doesn’t cover C++11/14. Maybe a new version is being written along the way. If that appears, I would highly recommend it to any C++ beginner.
And you know what?
As it turns out of those three kids, that bought the book, two of them become programmers :)
2. Algorithms in C++
This time, I bought that book on my own! Typical books cost between 30..40 polish zloty. But Algorithms was priced double - something between 80…90zł. It was a lot of money! I spent a lot of time thinking if that book is really for me, maybe too advanced… in the end, I bought it. And I am glad I did that!
I like that the code was not in pseudo-code as in Cormen, but in C++. You could copy and paste it and see how it executes. It was vital for learning.
Chapter by chapter I got a basic understanding of algorithms and data structures. I often return to that book. I am also thinking about buying the newest edition… but unfortunately, it was rewritten into Java.
3. OpenGL Superbible(s)
Cover From openglsuperbible.com/previous-editions/
You can read the review of the latest (7th) edition of the book on my blog here.
After creating some basic text/console programs, I moved to graphics programming. This choice was heavily inspired by Borland BGI Graphics and Allegro Library. I knew that OpenGL was something big at that time (and still is!) so I thought it would be a good way to improve my graphics knowledge.
Probably, I don’t have to mention that the book is excellent. Even the first version was! As with most books at that time there was a CD attached so you could see all the examples running! I wonder if I still have that CD around. Over the years, with the new editions, the CD was removed from the book, the examples were moved to site download option, and the quality of the book content got better and better.
I followed Superbible series. Today I got three books: 1st, 4th, and the 7th editions. Each version quickly caught the current version of OpenGL. You could see how OpenGL advances: from fixed pipeline to simple vertex/fragment shaders and now to fully ‘GPU side’ programming style. Maybe I wouldn’t lie if I say that the book is the standard book for learning OpenGL. There is OpenGL Programming Guide, but most of the people like Suberbible as I can imagine.
4. Game Programming Gems series
Site of the editor - Mark DeLoura - Gems series
In some of my examples I’ve used “The Parallel Transport Frame” described in the second volume of the series. With that technique I could extrude 2d shapes along splines. That was a cool way of doing any kind of ropes or worms. Maybe that would be a good topic for a separate post.
I own four volumes: 1st, 2nd, 3rd, and 6th.
5. Tricks of the 3D Game Programming Gurus
To be honest, I wasn’t persistent enough to finish all the book. I followed like half of it. So my ‘amazing’ engine could render wireframe objects only. Then I stopped with the implementation and moved into OpenGL again (there was also many things to learn at that ‘higher’ level). Still, I tried to read the book and understand ideas behind texturing, sampling, clipping and other covered effects.
Some of the screenshots from the samples (found here)
What’s great about this book is that it’s still valid! Of course our rendering engines are very very powerful, still with the book you can learn how to code triple buffering or mipmaps. That knowledge will be relevant for many years.
6. Code Complete
Code Complete: A Practical Handbook of Software Construction, Second Edition, by Steve McConnell
It covers lots of different aspects of making great software. It describes a good coding style, how to debug apps and even how to apply agile and improve as a programmer. Lots of areas but very well structured.
Over the years I returned to the book many times. There’s always something you can learn or recall.
7. Passionate Programmer
Ream my review here on my blog.
Other worth mentioning:
I’ve chosen only seven books, but I couldn’t resist mentioning some of other titles.
More OpenGL Programming
More OpenGL Game Programming, David Astle editor.
The book was a step further after reading OpenGL Superbible and other beginner-level books. It gives a lot of interesting articles that are worth implementing and are a must for advanced graphics programming.
ShaderX6: Advanced Rendering Techniques, edited by Wolfgang Engel
Thanks to probably the 6th volume of the series I was able to finish my master’s thesis! There was a separate section on shadows, so I used it for my work then.
The series is continued, but with a different name: GPU Pro series.
John Sonmez is doing a great job in the field of inspiring people (especially programmers) how to be better. His Soft Skills book touches a lot of aspects of development career, motivation, learning, blogging. It’s a good addon to Passionate Programmer book. I’ve done a review for the book if you’re interested.
Sorry for another nostalgic post :) The list was compiled for a lot of weeks, so finally I was able to release it. Of course, I didn’t include all the maths, physics, logic book that were required on studies. I listed only popular IT books.
What are your favorite books? What book was the first that taught you how to code?