A great "semantics first" account of the concepts underlying programing languages.
An excellent account of defining semantics of programming languages, that covers denotational, axiomatic, and operation semantics, finishing off with a brief look at category theory. One of the books I used while I was developing the Demonstrably Correct Compiler.