一、Scala是什么
Scala是一种多范式的编程语言,其设计的初衷是要集成面向对象编程和函数式编程的各种特性。Scala运行于Java平台(Java虚拟机),并兼容现有的Java程序。
Scala语言的名称来自于"可伸展的语言"。之所以这样命名,是因为它被设计成可以随着使用者的需求而扩展。Scala的应用范围很广,从编写简单脚本,到建立大型系统。 它在许多方面体现了面向对象和函数式编程的熔合;或许这种熔合比其他那些广泛使用的语言体现得还要深入。在可伸展性方面,这两种编程风格具有互补的力量。SCala 的函数式编程简化了用简单部件搭建实际应用的过程。它的面向对象特性又使它便于构造大型系统并使它们适应新的需求。Scala中这两种风格的组合使得表达新的编程模式和新的组件抽象成为可能。同样也让这种易读、简洁的编程风格成为顺理成章的事。而且由于 SCala 良好的延展性,因此用它来编程也充满乐趣。
二、Scala能做什么
从技术层面上讲,Scala是一种把面向对象和函数式编程理念加入静态类型语言的混合体,它可以
- 运行在标准的Java平台上,可以与所有的Java库无缝交互;
- 可以编写脚本,把Java组建组合起来;
- 更能发挥它力量的地方,在于用它来建立大型系统或可重用控件的架构。
三、Scala的优点
1.优雅:这是框架设计师第一个要考虑的问题,框架的用户是应用开发程序员,API是否优雅直接影响用户体验。
2.速度快:Scala语言表达能力强,一行代码抵得上Java多行,开发速度快;Scala是静态编译的,所以和JRuby,Groovy比起来速度会快很多。
3.能融合到Hadoop生态圈:Hadoop现在是大数据事实标准,Spark并不是要取代Hadoop,而是要完善Hadoop生态。JVM语言大部分可能会想到Java,但Java做出来的API太丑,或者想实现一个优雅的API太费劲。
四、Scala的特征
- 一致性: 尽管Scala融合了静态类型系统、面向对象、函数式编程等语言特性,但却很少能看出融合的痕迹。Scala是我见到融合最多语言特性而又不显得杂乱的编程语言之一。
- 类型安全:Scala创始人是教授,他先带领创建了Java 5编译器,而后觉得Java有太多羁绊而发明了Scala。 Scala编译器和类型系统非常强大,它的目标是尽量把软件错误消灭在编写过程中。 Scala类型系统是图灵完备的,甚至可以在编译期间解决问题。
- 面向对象: Scala是面向对象的编程语言,所有的变量和方法都封装在对象中,可以把信息封装起来供外部使用。
- 函数式编程:Scala同时又是函数式编程语言,函数可以独立存在,可以定义一个函数作为另一个函数的返回值,也可以接受函数作为函数的参数。这给组合函数带来了很大的便利。如何把面向对象编程形容成搭积木的话,函数式编程就像拼线条,更灵活和更有创意。
- 异步编程: 由于函数式编程提倡变量不可变,使异步编程变得非常容易。同时Scala提供的Future, 和akka类库,使得异步编程变得非常容易。
- 基于JVM: Scala会被编译成为jvm bytecode,所以Scala能无缝集成已有的Java类库。你可以非常自然的使用已经存在的非常庞大且稳定的Java类库,比如小巧好用的apache.common.*, 或者Java上的各种工具类库。
五、总结
Scala的追求不在于Ruby的“好玩”,Python的“简单“,Scala的追求在于速度与性能的提升,怎样有效率就怎样弄。Scala不把程序员当傻子,Scala "Don Giovanni"项目创始人马丁·奥德斯基在视频中说的很清楚:“Scala现在是为聪明人创造的,以后也是为聪明人服务的。”所以不同于Python让程序员用一种方法做所有事情,Scala提供一整套工具,让程序员自由选择,无论是mutable数据结构,immutable数据结构,并行(parallel)数据结构。然后在这些选择中,Scala再针对他们进行算法层面的特殊优化。Scala相信程序员的聪明才智,让程序员自行选择合适的结构,以针对变化万千的任务需求,这点是Scala做得极好的地方。
本文部分内容参考
什么吗是Scala?为什么要学Scala?
Scala 是一门怎样的语言,具有哪些优缺点?
编程语言scala有哪些特点