JVM上的语言越来越多了,从前几年的groovy、Scala和Clojure,现在又听说一门Kotlin。对于前三种语言,groovy算是JVM平台上的动态脚本语言,可以类比Python;Scala以其直逼C++的语言复杂度而出名,但是该语言的流行是因为高并发(akka)和大数据处理(Spark);Clojure是JVM上的Lisp重现,是纯粹的函数式编程语言,它在实时计算(Strom)中承担了一部分责任。
我决定了解Scala的原因是高并发,以及它与Java具备良好的互操作性,因此我试图在将来的项目中引入Scala,让其负责项目的并发处理模块。
Scala令我刮目相看的地方还有,很多语言特性的设计就会让你不自觉使用一些设计模式,或者说根本不需要设计模式。例如:利用Trait可以轻易实现装饰器模式、利用函数值可以轻易实现策略模式等。
在《Scala程序设计》这本书中,作者给出了Scala的几个重要特性:
但是 Scala为什么在国内不太火呢?据说是复杂度太高,黑魔法太多,导致学习曲线过于陡峭,对此我的看法是:Scala是一门密度很高的语言,它的作者好像很懒,还是烦透了Java那过于冗余的代码风格,Scala完全是为了少写代码而设计。我们在使用Scala的一些语法糖的时候,应该兼顾可读性,在不影响可读性的情况下使用Scala的黑魔法。
团队在推广使用Scala之前,要首先学习它的语言规范(官方的没有?那就制定团队自己的),这时可以参考Effective Scala
通过前面的论述,相比你也明白自己是否会选择Scala了,跟随下面的列表,可以大概了解下Scala的具体内容了。