Scala是适合你的语言吗?
Scala是一门混合了函数式和面向对象的语言。用Scala创建多线程应用时,你会倾向于函数式编程风格,用不变状态(immutable state)①编写无锁(lock-free)代码。Scala提供一个基于actor的消息传递(message-passing)模型,消除了涉及并发的痛苦问题。运用这个模型,你可以写出简洁的多线程代码,而无需顾虑线程间的数据竞争,以及处理加锁和释放带来的梦魇。把synchronized这个关键字从你的字典中清除,享受Scala带来的高效生产力吧。
然而,Scala的益处并不仅限于多线程应用。你可以用它构建出强大而简洁的单线程应用,或是多线程应用中的单线程模块。你很快就可以用上Scala的强大能力,包括自适应静态类型、闭包、不变的容器以及优雅的模式匹配。
Scala对于函数式编程的支持让你可以写出简洁而有表现力的代码。感谢更高层的抽象,它让我们可以用更少的代码做更多的事情。单线程应用和多线程应用都可以从函数式风格中受益。
函数式编程语言也为数不少。比如,Erlang就是一个很好的函数式编程语言。实际上,Scala的并发模型同Erlang的非常相似。然而,同Erlang相比,Scala有两个显著的优势。第一,Scala是强类型的,而Erlang不是。第二,不同于Erlang,Scala运行于JVM之上,可以与Java很好地互操作。
就运用在企业级应用的不同层面而言,Scala这两个特性使其成为了首选。只要你愿意,就可以用Scala构建整个企业级应用,或者,也可以把它和其他语言分别用在不同的层上。如果有些层在你的应用中至关重要,你就可以用上Scala的强类型、极佳的并发模型和强大的模式匹配能力。下图的灵感源自Ola Bini的语言金字塔(参见附录A的“Fractal Programming”),它展现了Scala在企业级应用中与其他语言的配合。