tags:

views:

1898

answers:

13

I've become very interested in Scala and see that there are several books out there at this point. Can anyone with experience with some subset of them recommend a book for a reasonably experienced OO programmer? The list I see is:

  • Programming in Scala - Odersky, Spoon, Venners
  • Beginning Scala - Pollak
  • Programming Scala - Subramaniam
  • Programming Scala - Payne, Wampler
  • Steps in Scala - Loverdos, Syropoulos

Any recommendations and/or pros and cons of the books listed is greatly appreciated.

+3  A: 

I would go with "Beginning Scala" (off topic: is there an underline feature to SO, I don't feel right putting books in quotes) Because Pollak is pretty big (from the looks of things) in the scala world. Plus apress has a really good reputation of having very high quality books (in my opinion)

Matt S.
I remember the day when buying tech books was much simpler. If you wanted to learn about a software subject, you got the O'Reilly book. If there wasn't an O'Reilly book, you waited for one to come out. The only trouble you might run into is if there was more than one book from O'Reilly on the subject and even then, you probably just bought them all.
Tim
+4  A: 

I'm going to break a personal rule against recommending books I haven't read. I've heard good things about Scala by Example(PDF). I'm basing this on a recommendation from another programmer, and the fact that Odersky designed Scala, so he should know it better than anyone.

Bill the Lizard
Scala by Example is not a complete book, it's a draft document, and IMO it's not the best introduction to Scala - there are other books (such as the Artima book, of which Odersky is also one of the authors) that are easier to read and more complete.
Jesper
+4  A: 

What can be better than learning from the inventors of the language? Read their book.

ajay
Not being critical of the book, as I haven't read it, but I've found that a talent for designing a language and a talent for writing a book do not seem to fall on the same gene. There are cases where that is the case, but I'm looking primarily for a great book in this case. I've already acknowledged the design skills by asking the question.
Tim
Not in this case. "Programming in Scala" is really good.
Alexander Azarov
+4  A: 

I have only read Programming in Scala from that list, but I can vouch that it will be useful for an experienced programmer.

It covers a lot of ground so you do need a solid background of, say, Java; a coworker of mine who has 5+ years of experience with Java but not with functional style was able to pick up Scala by reading the book.

Of course nothing replaces experience so whichever book you end up choosing isn't as important as doing some hands-on coding.

andri
+6  A: 

It depends on how deep you want to get, I think as to which may be the best book. I think either of the first two would be excellent, but I am nearly done with Programming in Scala, and I have learned a great deal. The main problem with these books is that you should be using Scala 2.7.#, as 2.8 appears to have introduced some major changes, so, you can learn the language, but then be prepared to deal with the changes.

Regardless of the book, the hardest part of learning Scala is trying to come to grips with the challenges of functional programming. Once you get used to not using for loops, at least for me, it becomes easier.

James Black
+8  A: 

Well, both Programming Scala have e-book editions (mobipocket format), something I have found to be useful with my cell phone. They and Programming in Scala have PDF versions as well. The price for having both paper and e-book formats varies a lot, however.

As for Beginning Scala, at the time I bought it I couldn't find a good deal for both versions, so I ended with just the printed one. I don't know in what formats the e-book one is offered.

Now, while I have not read it, Subramaniam's book has been recommended to me over its coverage of Actors, which is something I found to be weak on other books. Payne and Wampler's is a very good book, that doesn't give many breaks for you to breath. If you can take it and want speed, it might be the best of them.

Though I haven't read it, Beginning Scala was written by Lift's creator, so its focus might benefit a web developer more than the others. Or not. It is a Scala book, not a Lift book.

About Steps in Scala I don't know anything. I hadn't even realized it is already out.

Finally, Odersky's (et al) book gives a strong theoretical grounding on the language. After reading it, I felt I had a good feel for the design decisions of the language itself. It is a very big book, however, and might frustrate someone who wants things fast.

Daniel
As far as I can tell, Steps In Scala is no more. I think Tim must just have been enumerating some of the books listed at scala-lang.org/node/959 — Not even the publisher's site has any information on it or its authors.
Randall Schulz
I did indeed. It seemed like the best source for an aggregate list. At least I stopped before hitting the non-English books (though they might be great, I'm already having enough trouble getting my head around Scala features without another level of indirection).
Tim
+2  A: 

I've read parts of both "Programming and Scala" and "Beginning Scala" and I feel that Programming in Scala is good if you need go from basics to advanced programming in scala, where as Beginning Scala covers some important features of Scala with a limited number of examples.

dvvrt
+3  A: 

I've read Programming in Scala, Programming Scala (Payne/Wampler) and Beginning Scala and found all three good (the first two in particular). Scala has a lot of surface area and I found that while there was a lot of overlap among them, each has topics that are covered exclusively in one or with greater detail than the others.

I'd recommend Programming in Scala and Programming Scala (Payne/Wampler) together. The latter also has coverage of Scala 2.8 features.

dpp
+2  A: 

In my opinion, the book by the creators of the language "Programming in Scala - Odersky, Spoon, Venners" would suit anyone pretty well. To be honest, the part on type variance is a little mind boggling at first but after some thought with the book's help, its manageable.

for your consideration

Raymond Tay
+2  A: 

I have the Artima book (Odersky, Spoon, Venners) myself and I liked it a lot - it's a well-written book that covers a lot, and it's at the right level for someone who knows for example Java.

I've also seen and browsed through the O'Reilly book (I don't have it myself) but I think it's less good than the Artima book - it's a lot thinner, and I couldn't find a number of subjects in it that I did learn about in the Artima book.

I'd highly recommend the Artima book. Regardless of any comparison to other books, it's very well written and a really good technical book.

Jesper
+2  A: 

The book "Steps in Scala" has not been published yet. It will hit bookshelves in September. 2010.

Apostolos Syropoulos
+4  A: 

I have heard many good things about Scala in Action.

Moreover, only the designer of the language can give you the best insights of the language. Hence, at the moment, Programming in Scala by Martin Odersky, Lex Spoon, and Bill Venners will be the best for initial learning.

this.Liar
+2  A: 

Artima's Programming in Scala is the best Scala book you can get at the moment. Very recommended. I found O'Reilly's Programming Scala to be a good second book; It moves a bit faster than I'd like though.

I also tried David Pollak's Beginning Scala but didn't quite like it, and I don't recommend it to anyone.

All the above-mentioned books are somewhat oudated as they don't cover a lot of things new in Scala 2.8. I am hoping that the updated editions of these books will be published soon.


Though more than half a dozen Scala books have already been published, I believe that the best books are yet to come.

The two books in particular that I think you should keep your eye on are:

  1. Scala in Depth by Josh Suereth

  2. Steps in Scala by Christos Loverdos and Apostolos Syropoulos

missingfaktor