I would recommend "Structure and Interpretation of Computer Programs" <http://mitpress.mit.edu/sicp/>;
This book is a classic in Computer Science and it explains, discusses various programming concepts ... mainly from the compiler/interpreter point of view.