I learned some nice things with The Nature of Code. It may not be suited for you if you never done any programming at all. I'd say it's less geared towards learning programming itself, and more geared towards implementing actual concepts that are useful for making games, such as vector math, physics, cellular automata, and more.
So I guess it tackles your second question, as it gives you an overview of the topics you may need to learn down the road, and it teaches you some of the math fundamentals.
If you're a complete beginner and this book is a step ahead of you, I think it's still worth keeping in your library for later on.