Top positive review
6 people found this helpful
The genuine book of Scala
on 25 August 2013
I'm very much glad that I've picked "Scala for the Impatient" as my second book about Scala (after Atomic Scala by Bruce Eckel and Dianne Marsh). The book was a very pleasant and knowledgeable journey throughout the Scala land. No doubt why Martin Odersky, the author of Scala, accepted to write the Foreword. I myself wholeheartedly recommend this book.
This is a great book for anybody who wants to get his feet wet in Scala and yet the time is just for 384 pages. Plenty of examples after every chapter makes absorbing the wisdom of Scala from the book an almost never-ending endeavour. Don't skip them so you can fully appreciate the author's efforts to teach you Scala.
I consider myself a novice to the Scala language with a quite extensive, decade-long experience in Java and a bit of functional programming in Clojure and F#. Without much practice in Scala I needed a book that would guide me as if I'd attended a Scala course. I think Scala for the Impatient did the job very well. It was written in a lively style and the level of details greatly went beyond my expectations. I'm now using the book as a reference to turn me into a Scala professional and the often I read the chapters the more details I find (I guess it may well apply to any IT book, but only now could I experience the feeling).
The book provides many (if not all) of the most interesting parts of Scala for all of the levels of Scala experience. The book uses the experience levels that were identified by Odersky to distinguish the features of Scala that would be of interest to application programmers and library designers. I didn't pay attention to the levels, though and read the book from cover to cover.
Right from Chapter 1 the author encourages to write smaller programs as a way to learn Scala. If the steps to install Scala were to serve as an indicator of how the book is written, it took the author 4 single-line bullet points and the Scala interpreter was available. That was surprisingly concise. Should you need more, you're asked to visit the book's website. The author simply decided to waste no page for a less interesting material.
Every chapter begins with an introduction to highlight the main points. This may very well be used for less experienced people who only need a gentle introduction to more advanced features of Scala. Think of the introductions as an overview of Scala and the chapters as an more in-depth material. With the experience levels it may save you a great deal of (reading) time yet keep you abreast of the features of Scala you don't need to know now, but may need later.
The author quite often compares Scala to Java and C++ (sometimes C#) and although he said in Preface "I assume you know Java, C#, or C++" some experience with the languages might help, but is certainly not required. It just let the author skip "explaining variables, loops, or classes" (page xix). Full coverage of Scala is not the goal of the book and so is convincing you to use functional paradigm over object-oriented one (or vice versa). The author simply demonstrate Scala with notes about his experience and let you pick what suits you the most.
Regarding the title - "Scala for the Impatient" - don't get fooled by the "Impatient" part. It's not that the book skims over Scala hoping that you learn it without knowing few more details or similar. Quite the contrary, but the pace is well-thought-out and steady so you may not notice you're reading stuff you would consider out of your scope. Cay Horstmann gave them so many that I think I may have understood the reason behind the "Impatient" part - I often became impatient to apply the knowledge to projects, but couldn't simply stop reading as I was worried I'd miss parts that would help me sorting out problems even better (!)
And the last but not least, the book was issued on March 06, 2012, but given the recent changes in Scala I don't think it has lost its value (despite not being up to the recent version of Scala and missed a few latest changes). The version of Scala used in this book is 2.9 as the pre-2.10 String concatenation and a note about enabling continuations in 2.9 might imply. It didn't make the book any less valuable.