Programming language pragmatics
This book made me interested in programming language design. It introduces the concept’s of language design and compiler design at the same time. The implementation (compiler design) along side the theory (language design). In particular this book gives one an intuition for why certain language features are present, how they might be implemented, and thus how best to use them. Understanding compilers will always make one better at programming, though this book goes beyond that. This book is the perfect middle between Engineering a compiler and Elements of programming. The author also includes some linguistic intuition giving rise to an interest in pure language examination like The meaning of language.