Learning Scala is not easy, but it is interesting. I followed the Coursera course to understand scala. The purpose to learn scala is
1. to understand how functional could be helpful for my daily tasks.
2. to make use of spark better and to be able to write spark code.
3. to make use of Akka for concurrency programming, which is an advanced stage for java programmers like me.
The fact is,
Non-deterministic = parallel processing (concurrency and parallel) + mutable states
People want to write codes that are within their control, while controlling time (sync over time and remove unwanted scenarios) is difficult. So imperative programming is from the machine perspective, while not for the sake of programmers, and the main purpose of scala for me is to learn how to write concurrent codes easily.