Books
Here’s a list of progamming books that I personally enjoyed and consider to be the best.
History
- “Code: The Hidden Language of Computer Hardware and Software” by Charles Petzold
- “Coders at Work: Reflections on the Craft of Programming” by Peter Seibel
- “Hackers: Heroes of the Computer Revolution” by Steven Levy
- “Just for Fun: The Story of an Accidental Revolutionary” by Linus Torvalds
- “Masterminds of Programming: Conversations with the Creators of Major Programming Languages” by Federico Biancuzzi, Shane Warden
- “Mythical Man-Month, The: Essays on Software Engineering” by Frederick Brooks Jr.
- “The Design and Evolution of C++” by Bjarne Stroustrup
- “The Soul of A New Machine” by Tracer Kidder
- “UNIX: A History and a Memoir” by Brian W Kernighan
Computer Science (data structures, algorithms)
- “Algorithms” by Robert Sedgewick, Kevin Wayne
- “From Mathematics to Generic Programming” by Alexander Stepanov, Daniel Rose
- “Introduction to Algorithms” by Thomas H. Cormen et al.
- “The Algorithm Design Manual” by Steven S. Skiena
Low level, OS etc.
- “Computer Systems: A Programmer’s Perspective” by Randal E. Bryant and David Richard O’Hallaron
- “Modern Operating Systems” by Andrew S Tanenbaum
Linux
- “How Linux Works, 3rd Edition: What Every Superuser Should Know” by Brian Ward
- “The Linux Command Line: A Complete Introduction” by William E. Shotts Jr.
Tools
- “Practical Vim: Edit Text at the Speed of Thought” by Drew Neil
- “Pro Git” by Scott Chacon and Ben Straub.
- “Professional CMake: A Practical Guide” by Craig Scott
Compilers
- “Compiler Construction: Principles and Practice” by Kenneth C. Louden
- “Compilers: Principles, Techniques, and Tools” by Alfred Aho et al.
- “Crafting Interpreters” by Robert Nystrom.
- “Writing An Interpreter In Go” and “Writing A Compiler In Go” by Thorsten Ball
Architecture, design patterns etc.
- “API Design for C++” by Martin Reddy
- “Code Complete: A Practical Handbook of Software Construction, Second Edition” by Steve McConnell
- “Design Patterns: Elements of Reusable Object-Oriented Software” by Erich Gamma et al.
- “Refactoring: Improving the Design of Existing Code” by Martin Fowler
- “Working Effectively with Legacy Code” by Michael Feathers
C
- “21st Century C: C Tips from the New School” by Ben Klemens
- “Expert C Programming: Deep C Secrets” by Peter van der Linden
- “C Programming Language” by Brian W. Kernighan, Dennis M. Ritchie
- “Practical C Programming: Why Does 2+2 = 5986” by Steve Oualline
- “Effective C: An Introduction to Professional C Programming” by Robert C. Seacord
C++
- “A Tour of C++” by Bjarne Stroustrup
- “C++ Concurrency in Action” by Anthony Williams
- “Effective Modern C++: 42 Specific Ways to Improve Your Use of C++11 and C++14” by Scott Meyers
- “Modern C++ Programming with Test-Driven Development: Code Better, Sleep Better” by Jeff Langr
- “The C++ Programming Language” by Bjarne Stroustrup
- “The Practice of Programming” by Brian W. Kernighan and Rob Pike
Advanced
- “C++ Templates: The Complete Guide” by David Vandevoorde, Nicolai Josuttis, Douglas Gregor
- “C++17 - The Complete Guide” by Nicolai M. Josuttis
- “Modern C++ Design: Generic Programming and Design Patterns Applied” by Debbie Lafferty, Andrei Alexandrescu
Outdated, but worth a read
- “Effective C++: 55 Specific Ways to Improve Your Programs and Designs” by Scott Meyers
- “Effective STL: 50 Specific Ways to Improve Your Use of the Standard Template Library” by Scott Meyers
- “More Effective C++: 35 New Ways to Improve Your Programs and Designs” by Scott Meyers
Go
- “Let’s Go” and “Let’s Go Further” by Alex Edwards
- “The Go Programming Language” by Alan A. A. Donovan, Brian W. Kernighan
Lua
- “Programming in Lua” by Roberto Ierusalimschy
Game development
- “3D Math Primer for Graphics and Game Development” by Fletcher Dunn
- “Artificial Intelligence for Games” by Ian Millington and John Funge
- “Foundations of Game Engine Development” series by Eric Lengyel
- “Game Coding Complete, Fourth Edition” by Mike McShaffry, David Graham
- “Game Engine Achitecture” by Jason Gregory
- “Game Engine Gems” series
- “Game Feel” by Steve Swink
- “Game Programming Gems” series
- “Game Programming Patterns” by Robert Nystrom.
- “Level Up! The Guide to Great Video Game Design” by Scott Rogers
- “Programming Game AI by Example” by Mat Buckland
- “Real-Time Collision Detection” by Christer Ericson
Graphics
- “3D Graphics Rendering Cookbook: A comprehensive guide to exploring rendering algorithms in modern OpenGL and Vulkan” by Sergey Kosarevsky, Viktor Latypov
- “Anton’s OpenGL 4 Tutorials” by Anton Gerdelan.
- “GPU Gems” series
- “GPU Pro” series
- “Learn OpenGL: Learn modern OpenGL graphics programming in a step-by-step fashion” by Joey de Vries.
- “Real-Time Rendering” by Tomas Akenine-Moller, Eric Haines, Naty Hoffman
- “Real-Time Shadows” by Elmar Eisemann et al.
Consoles / platforms / games
- “Game Engine Black Book Doom” by Fabien Sanglard.
- “Game Engine Black Book Wolfenstein” by Fabien Sanglard.
- “Hacking the Xbox: An Introduction to Reverse Engineering” by Andrew Huang
- “I Am Error: The Nintendo Family Computer / Entertainment System Platform” by Nathan Altice
- “Racing the Beam: The Atari Video Computer System” by Nick Montfort, Ian Bogost