Robert Nystrom's books are nonfiction about programming. Crafting Interpreters is a hands-on guide to designing and building a programming language, using a small language called Lox to develop two working interpreters: a tree-walk version and a fast, low-level virtual machine. Game Programming Patterns is a second nonfiction book under the name.