Scala基础入门(一)Scala 简介

2023-05-04 20:59:51 浏览数 (2)

Scala

在 Scala 首页有这么一段话:

Object-Oriented Meets Functional Have the best of both worlds. Construct elegant class hierarchies for maximum code reuse and extensibility, implement their behavior using higher-order functions. Or anything in-between.

我们来理解一下: 面向对象遇上面向函数。 对于Scala而言, 二者的特性兼而有之。为最大化代码重用和可扩展性构建优雅的类层次结构,使用高阶函数实现它们的行为。是 Scala所提倡的。

简言之, Scala 语言既是面向对象的又是面向函数式的编程语言。

Scala即可伸缩的语言(Scalable Language),是一种多范式的编程语言,类似于java的编程,设计初衷是要集成面向对象编程和函数式编程的各种特性。

Scala 与 Java

Scala 与 Java 关系密切,体现在下面几点:

  • Scala 运行在 JVM 上, Scala 可以与企业现有 Java 应用同时运行
  • Scala 可以直接使用 Java 类库, 开发人员可以利用现有框架以及代码
  • Scala 与 Java 都是镜台语言
  • Scala 语法和Java 语法相近, 开发人员可以迅速掌握 Scala
  • Scala 既支持面向对象范型也支持面向对象范型,开发人员可以逐步运用函数式编程思想

Scala 诞生

了解了 Scala 的特性之后,我们追本溯源, 了解下 Scala 的诞生起源。

Scala 是 EPFL(瑞士洛桑联邦理工学院)教授 Martin Odersky 设计的, 他曾经参与 Java 范型规范的制定, 并且是javac编译器参考实现的作者。在一次访谈中, Martin Odersky 教授透露了开发 Scala 的原因:

长期以来,函数式编程社区对OOP不屑一顾,面向对象程序员又认为函数式编程只是学术活动的信条。因此 Martin Odersky 想表明这两种模式可以统一,并且一些新的更强大的功能可能因此产生。所以 Martin Odersky 教授设计了让自己感觉更舒服的Scala。

Scala 的使用

  • 2009年4月,Twitter宣布他们已经把大部分后端程序从Ruby迁移到Scala,其余部分也打算要迁移。
  • Wattzon已经公开宣称,其整个平台都已经是基于Scala基础设施编写的。
  • 瑞银集团把Scala用于一般产品中。
  • Coursera把Scala作为服务器语言使用。
  • Kafka 核心也是Scala 实现的。

函数式语言

面向对象的特性得以使应用平滑的从 Java 迁移到 Scala,但是Scala惹眼的是其函数式编程的特性。 函数式编程是一种具有很强数学基础的编程风格。 函数式编程语言一般具有以下几点特性:

  • 函数式程序由函数构成
  • 函数式总是有返回值
  • 函数对于相同的输入总是返回相同的输出
  • 函数式程序禁止改变状态或者修改数据。一旦你设定了一个值,就无需再管它了。

但是,Scala 并不是很严格的面向函数式语言, Scala 允许可变值,这可能导致在想通过输入的情况下却输出不一样的值。【类似于面向对象中的getter、setter将破坏这一规则】,但是Scala 提供了让开发人员合理应用函数式抽象的方法。

0 人点赞