【scala篇】scala初探,scala到底是啥?

Scala(发音为/ˈskɑːlə, ˈskeɪlə/)是一门 多范式的编程语言,设计初衷是要集成面向对象编程和 函数式编程的各种特性。(维基百科)

两种特性

面向对象:Scala是一种纯面向对象的语言,每个值都是对象。对象的数据类型以及行为由特质描述。类抽象机制的扩展有两种途径。一种途径是子类继承,另一种途径是灵活的混入机制。这两种途径能避免多重继承的种种问题。

函数编程:Scala也是一种函数式语言,其函数也能当成值来使用。Scala提供了轻量级的语法用以定义匿名函数,支持高阶函数,允许嵌套多层函数,并支持柯里化。Scala的case class及其内置的模式匹配相当于函数式编程语言中常用的代数类型


scala优缺点

优点:

  1. Scala有交互式命令行(REPL), 可以在上面快速的试各种语法和代码。
  2. 一致性: 尽管Scala融合了静态类型系统、面向对象、函数式编程等语言特性,但却很少能看出融合的痕迹。Scala是我见到融合最多语言特性而又不显得杂乱的编程语言之一。
  3. 类型安全:Scala创始人是教授,他先带领创建了Java 5编译器,而后觉得Java有太多羁绊而发明了Scala。 Scala编译器和类型系统非常强大,它的目标是尽量把软件错误消灭在编写过程中。 Scala类型系统是图灵完备的,甚至可以在编译期间解决问题。
  4. 面向对象: Scala是面向对象的编程语言,所有的变量和方法都封装在对象中,可以把信息封装起来供外部使用。
  5. 函数式编程:Scala同时又是函数式编程语言,函数可以独立存在,可以定义一个函数作为另一个函数的返回值,也可以接受函数作为函数的参数。这给组合函数带来了很大的便利。如何把面向对象编程形容成搭积木的话,函数式编程就像拼线条,更灵活和更有创意
  6. 异步编程: 由于函数式编程提倡变量不可变,使异步编程变得非常容易。同时Scala提供的Future, 和akka类库(和akka配合并发这块估计是难逢对手,并发编程基于消息传递机制,不用考虑线程等问题。),使得异步编程变得非常容易
  7. 基于JVM类java: Scala会被编译成为jvm bytecode,所以Scala能无缝集成已有的Java类库。你可以非常自然的使用已经存在的非常庞大且稳定的Java类库,比如小巧好用的apache.common.*, 或者Java上的各种工具类库。
  8. 类java,java程序员很容易上手。
  9. 大数据方向,Scala在Spark上可以很快做数据挖掘,效率非常高。

缺点:

  1. 编译笨重
  2. 国内文档较少,开发人员不像java,py,php等语言广泛,技术文档不全。



下一篇开讲“scala+akka”组合的并发模型的优劣对比,和go,java对比。

部分内容来之“知乎”,“维基百科”。




转载于:https://juejin.im/post/5ba343e7e51d450e5071f075

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值