If you are looking for a new programming language to learn this year, Scala is a good choice. Here are 5 reasons why:
If it is 10 years ago, I would never recommend Scala to anyone. Because a programming language can be very fast, elegant, and feature rich but is still not good to learn if nobody else is using it. However, that is not the case anymore because Scala has been growing quickly and is now used in many areas such as:
- Web frontend with ScalaJS and ScalaJS React
- Web server with Play, Lift, and Akka HTTP
- Android app with Scala on Android
- Data processing with Spark and Kafka
There is even an open-source chess server written in Scala.
Having used C++, C#, Java, and Python, I can say that Scala has a very concise and expressive syntax.
For example, to print "hello world" on console:
To declare a value (or variable in Java):
val i: Int = 6 val j = 9 // automatically inferred as `Int`
To declare a method:
def add(a: Int, b: Int) = a + b
To remove all odd numbers in a list:
val list = List(1, 2, 3) list.filter(x => isEven(x)) // result: List(2) // or more like English list filter isEven // result: List(2)
You can omit punctuations to have a more English-like syntax for extra expressiveness, this is called infix notation.
Scala built-in library comes with an extremely rich API. Filtering a list in the code snippet above is a very typical example.
List API also contains many other methods. For example, to loop through each item in a list:
To sum a list of numbers:
list.sum // result: 6
It works as long as the list contains numbers (e.g. integers, doubles...)
Computing the intersection of 2 lists is also simple:
val l1 = List(1, 2, 3) val l2 = List(2, 3, 4) l1.intersect(l2) // result: List(2, 3)
Yes, indeed. Compared to NodeJS or Python, Scala has a much smaller community and far fewer libraries (not counting Java ones). But it is not really bad because:
- Most of the time, we only use a few top libraries and those in Scala have high quality to make up for quantity
- People are very active and willing to help each other. Especially Gitter channels like Spark with Scala and typelevel/cats
Simply said, Java methods can be called and Java classes can be extended in Scala code. This means you have access to all Java libraries out there.
I was once questioning why should I use a language that looks so complicated. But after I understand Scala and realize how my life becomes much more easier, I'm in love with it. If the 5 reasons above are interesting to you, make sure to check out a short tour of Scala.
It's my first post to DEV, if you have any question or feedback, please let me know :)