Daniel Westheide writes about Scala, including the multi-part Neophyte's Guide to Scala, and about web API design and software complexity.
HN commenters repeatedly recommend the Neophyte's Guide as a top resource for learning Scala, calling it the best language introduction one commenter has read.
Agreed. I'm using IntelliJ Community Edition with Scala plugin. It works really well. Only settings I've changed were setting the font to Source Code Pro and turning off spell checking.
I'm absolutely loving Scala right now. I was writing a lot of stuff in Go until I started a new project that needed to leverage some Java libs. I had been wanting to try Scala, so I went with it instead of Java (or Clojure, etc).
I liked Go for it's elegant concurrency, ease of deployment, and fast compiler, but Scala's type system and composition with for comprehensions is really nice.
Java interop is pretty seamless so far. Scala has nice primitives for wrapping null and exceptions in safer ways and eliminates a lot of ugly x != null checks everywhere.
Coming into it, I'd heard that Scala was hard to learn, but I didn't find that to be true. I was only vaguely familiar with pattern matching, monads, traits, ADTs, etc from playing with Rust, but I found plenty of good resources for learning Scala.
I really found this series of blog posts to be helpful: http://danielwestheide.com/scala/neophytes.html
In no particular order:
- If you're at least a little familiar with Java, Scala for the Impatient is pretty good, though a little dated (I think the last edition covers Scala 2.12).
- Daniel Westheide's blog: https://danielwestheide.com/books/the-neophytes-guide-to-scala/
- https://www.scala-exercises.org (at least the part on the standard library).
- https://www.handsonscala.com
Note: Scala 3 introduces quite a bit of new syntax that is specifically designed to make intimidating features less so. But at the beginner/intermediate level it won't matter too much, for instance if you learn how to implement typeclasses the old way, you'll easily understand the new syntax. Also the Scala Center has committed to providing a lot of training material along with the Scala 3 release.
To anyone doing the course or interested in Scala, 2 recommendations:
* the blog of Daniel Westheide (http://danielwestheide.com/) has a series of posts (starting at http://danielwestheide.com/blog/2012/11/21/the-neophytes-guide-to-scala-part-1-extractors.html and currently at lesson 15) which may be worth reading to complement/expand on the course lectures. Probably not useful for the course itself until you’ve finished week 2 or 3, but relevant anyway.
* the book “Scala for the impatient”, probably the best book out there about Scala from beginner to advanced level
As you are asking for books
- Scala for the impatient (http://www.horstmann.com/scala/)
- Programming in Scala (https://booksites.artima.com/programming_in_scala_3ed)
I found those books very good resources. The Scala website lists a few others (https://www.scala-lang.org/documentation/books.html)
Aprt from that I found Daniel Westheides blog a very good starting point (http://danielwestheide.com/scala/neophytes.html)
I second "Scala for the Impatient", but if you don't have any statically typed background it might be a bit tough.
"The Neophyte's Guide to Scala" (http://danielwestheide.com/scala/neophytes.html) is hands down the best language introduction I've ever read though.
I started with Scala a year ago for work. I used a mixture of the resources listed here, but I found this [1] series the most valuable, after the other resources gave a basic foundation.
[1]: http://danielwestheide.com/scala/neophytes.html