Personally, Structure and Interpretation of Computer Programs is by far the most influential programming book I have ever read.
Some classics like Code Complete, Refactoring and Design Patterns teach you the effective working habits and the painstaking details of the trade. Others, like Peopleware, Psychology of Computer Programming and The Mythical Man-Month delve into the psychosocial aspects of software development. Numerous others deal with algorithms. These books all have their place.
SICP, however, is in a different league. It is a book that will enlighten you. It will evoke in you a passion for writing beautiful programs. Moreover, it will teach you to recognize and appreciate that very beauty. It will leave you with a state of awe and an unquenchable thirst to learn more. Other books may make you a better programmer; this book will make you a programmer.
And in the meanwhile, you will learn a thing or two about functional programming (side effects won't be introduced until chapter three), lazy evaluation, metaprogramming (well, metalinguistic abstraction), virtual machines, interpreters, and compilers.
Some think that SICP is not a beginner's book. Personally, I probably wouldn't have appreciated the book in full without having some programming experience under my belt, but I would definitely recommend it for a beginner. The book is, after all, written for the famous 6.001, the introductory programming course at MIT. It may require an intellectual effort (especially if you do the exercises - and you should), but the reward is well worth the price.
Not convinced? Read the Foreword or the Preface to the First Edition. The full text is freely available on the web.
It's available online for free, and there are even video lectures to go along with it.