Presents an introduction to the Scala programming language which is an abbreviated version of object-orientated programming combined with the power of concurrency capable of running on the Java Virtual Machine.
Scala reminds me of Java trying to be Haskell. If you know either of those then you have a head start.
Martin Odersky’s course Functions Programming in Scala: https://www.coursera.org/learn/scala-functional-programming
Scala for the Impatient: https://github.com/shellyhanda/Scala/blob/master/Scala%20for...
- 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-sca...
- 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.
I'd recommend the book 'Scala for the Impatient', tutorials and projects from Twitter, and Maven or SBT template projects.
We began working with Scala very slowly, only using it for small internal projects until we were more familiar with the language and stack.
We also avoided heading too deep into category theory territory in the beginning. Libraries like Cats and Scalaz are not allowed (currently).
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)