5 Best Ways To Introduce Yourself To Scala in 2015

scala-logo

You might have not had a chance to fully realize that it’s already 2015, but here it is, and actually we will have to live in it for some 355 days or so. =) Therefore, as usual, for most of us the beginning of a new year means that it’s time to try out something new and shiny or perhaps just trendy. The Scala programming language has been there for a while by now, but nowadays it’s becoming more and more popular, gaining adoption by big and small companies worldwide. Thus, I’ll not be beating around the bush for long and instead will list my personal favorite sources that should help you in getting up to speed with this magnificent language(Truth to be told, if you don’t understand why you might actually want to learn Scala, I suggest that you stop reading this article right away and go looking for resources explaining the advantaged of this language over, say, Java.).

1. “Scala for the Impatient” by Cay Horstmann

for-impatient

Scala for the Impatient” is an excellent introduction to the language, especially suitable for developers familiar with Java/C#. It showcases the most important features of the language in short and clear examples. A big chunk of this book is available for free at TypeSafe(The company that develops Akka, Play and other cool Scala-based technoligies).

So far I’ve read this book twice and even did perhaps a half of the exercises to practice the material explained. You can also skip chapters on “Parsing and Domain-Specific Languages” and “Delimited Continuations” when you first read the book and get back to them later.

2. “Functional Programming Principles in Scala” on Coursera

func-prog-class

The class “Functional Programming Principles in Scala” on Coursera is a superb introduction to both Scala language and Functional Programming. It coves the most important parts of the language, focusing mostly on functional approach to programming. The tasks that you are given in this course are solid and sometimes even challenging, soby the time this class is finished you will have a good hands-on experience with the language.

Martin Odersky did 2 runs of this course in 2014, and I believe will do at least one or two this year as well.

3. “Learning Concurrent Programming in Scala” by Aleksandar Prokopec

1411OS_Learning Concurrent Programming in Scala_frontcover.jpg

This is a very good book on concurrent programming that is inspired by a very well known “Java Concurrency in Practice“, which is in turn an absolute must read for every Java developer. The Concurrent Programming in Scala starts with low-level primitives and Java Memory Model, and then explains more high-level abstractions like Akka Actors and STM. The author has actively contributed to the Scala programming language, and has worked on programming abstractions for concurrency, data-parallel programming support, and concurrent data structures for Scala.

I’ve got a e-copy of this book on a sale from PacktPub, but even if I didn’t I would have gladly paid the full price for it.

4. “Principles of Reactive Programming” on Coursera

principles-reactive-v1.0

This is also a very good and challenging class on Coursera that I hope to complete in 2015, as I did’t have enough time to go through it in 2013 when it was first introduced. (I’ve heaved about this class from colleagues who participated in its first run and were very satisfied.)

5. Scala, Akka, SBT documentation

Besides the aforementioned courses and books, Scala these days provides a very good set of online documentation to help you learn the language and related frameworks. For example, if you are a total newbie you might be interested in Getting Started with Scala and SBT(the SBT one is off-times a bit difficult to comprehend from the first read, so be prepared to re-read it again if needs be.)

For more skilled engineers, there are very good references on Futures, Akka and Play Framework. (And actually many more if you don’t afraid to google a bit).

Wish you all a lot of good Scala experience this year!

Leave a comment