Scala这个有知道的吗,怎么样啊?
Scala是一门多范式语言,一般常用的范式有:命令式 和 函数式,由于Scala是一门多范式语言,所以通俗来说我们可以说Scala是一门命令式编程语言同时也是函数式编程语言。
命令式:命令式是植根于冯·诺依曼体系的,一个命令式程序就是一个冯·诺依曼机的指令序列,给机器提供一条又一条的命令序列让其原封不动的执行。通俗来说就是按照指令顺序一步一步执行。
函数式:又称泛函编程,它将计算机的计算视为数据中的函数计算。函数式编程最重要的基础是λ(lambda)演算,λ演算对函数式编程语言有着巨大的影响。典型的函数式语言包括Erlang和Lisp等。
为什么要用函数式:
目前来说CPU的性能发展大体上是在同等面积上集成更多的晶体管等集成电路,随着纳米技术的不断提高,CPU能够集成的计算单元也越来越多,但终归是有上限的。所以在之后,单核的发展逐渐走向了多核的发展,以多核来达到性能的提升。
目前计算机的CPU基本上都是多核CPU,在使用命令式编程的时候就设涉及到多线程之间的状态共享,需要锁机制实现并发的控制,而锁机制虽然保证了安全性,但是却对性能来说是一个阻碍。
而函数式编程不会再多个线程之间共享状态,不需要用锁机制,可以更好的并行处理,充分利用多核CPU的并行处理能力。
如,电信行业多数使用Erlang来进行开发,就是看中了函数式编程的并行处理能力。
Scala的特点
Scala是面向对象的:Scala是一个纯面向对象语言,在某种意义上来讲所有数值都是对象。对象的类型和行为是由class和trait来描述的。Class的抽象可由子类化和一种灵活的基于mixin的组合机制(它可作为多重继承的简单替代方案)来扩展。
Scala是函数式的: Scala还是一个函数式语言,在某种意义上来讲所有函数都是数值。Scala为定义匿名函数提供了一种轻量级的语法,它支持高阶(higher- order)函数、允许函数嵌套、支持局部套用(currying)。Scala的case类及其内置支持的模式匹配模型代数类型在许多函数式编程语言中 都被使用。
Scala是静态类型的:Scala配备了一套富有表现力的类型系统,该抽象概念以一种安全的和一致的方式被使用。
Scala是可扩展的:Scala的设计承认了实践事实,领域特定应用开发通常需要领域特定语言扩展。Scala提供了一个独特的语言组合机制,这可以更加容易地以类库的形式增加新的语言结构:两者结合使用可方便地定义新语句,无需扩展语法,也无需使用类似宏的元编程工具。
任何方式可以被用作中缀(infix)或后缀(postfix)操作符
闭包按照所期望的类型(目标类型)自动地被构造
Scala可与Java和.NET进行互操作:Scala 设计时就考虑了与流行编程环境良好交互,如Java 2运行时环境(JRE)和 .NET框架(CLR)。特别是与主流面向对象语言,如Java和C#尽量无缝交互。Scala有像Java和C#一样的编译模型(独立编译,动态装载 类),允许访问成千上万的高质量类库。