This is one of the most clear and enjoyable Computer Science books I have ever read -- and being a CS Ph.D. student I've read quite a lot! The examples are at the right level of complexity, and the exercises at the end of each chapter are actually (gasp) fun! Alternating theoretical and practical chapters makes for a very balanced reading, where abstract concepts are explained by linking them to real language features.
The book smoothly moves the reader through Standard ML, Java and Prolog in a concise and pleasant manner. Although it doesn't go deep in any of these languages, it provides the reader with enough background to create simple programs and utilize the power of each language; the interested reader can go on to learn advanced language features with the confidence that all the basics have been covered. The book draws clear distinctions between all three languages, each of which represents a different way of thinking about programming. If you are looking for an excellent book on programming languages, or you just want to get a feel about different programming paradigms, this is your book!