I picked up a copy of Beginning Scala a week ago, and I’m finding it to be a useful complement to Programming in Scala. I dropped a quick note to David Pollak, the author of Beginning Scala, and in his response, he wrote:
Oddly enough… I think Beginning Scala is kinda useless for folks who are already into Programming in Scala… but I’m glad you’re finding it useful!
He’s wrong, though, at least for me.
I find, when I’m learning a new language, that different approaches fire different synapses. Programming in Scala (sometimes called “the staircase book”, for its front cover) is an in-depth book that covers Scala in great detail. It is, in every way, the K & R) of Scala. I have a copy of Programming in Scala; I’ve read it, and I continue to refer to it and re-read parts of it.
Now that I’m about halfway through Beginning Scala, I’m finding that it’s pointing out some new tricks, tricks I missed in the staircase book and on the mailing lists. I’m certain I could find these tricks find by poring back over the staircase book, but Pollak’s clear, concise and highly practical approach makes them readily apparent and easy to grasp.
When I was doing a lot of C programming, I had several C language books on my bookshelf, all within easy reach. The two I used most often were the venerable K & R) (I had two editions of that one) and Harbison and Steele. Both books were useful, for different reasons. One did not replace the other; they complemented each other nicely. Similarly, I find that Programming in Scala and Beginning Scala are useful complements to each other.
I’ve been using Scala for several months now, and it’s not the first programming language I’ve taught myself (not by a long shot). It is a complex and powerful language, and I cannot learn all its tricks from one book, or even from reading alone. I’ll be learning it and refining my use of it for awhile yet, which makes me, at best, an intermediate Scala user, despite many years of experience as a programmer. Alternate viewpoints help, and although Beginning Scala is ostensibly targeted at Scala beginners, it assumes the reader is not a programming beginner or an idiot. It’s written in a concise, practical style that contrasts nicely with the style of Programming in Scala. The different approaches the two books take hammer home many of the concepts of Scala in a way that either book, by itself, does not.
Neither book has made it to my bookshelf yet, because I keep referring to both of them. For me, that’s proof enough of their value.