What is Scala
Scala 产生于瑞士的洛桑联邦理工学院(EPFL),是“可扩展语言”
(Scalable Language)的缩写,
Sala 是一门静态类型语言
名词解释:
静态类型语言 :
编译期间会发生类型检查,一般是构建比较复杂的架构
动态类型语言
运行期间发生类型检查
按照JAVA虚拟机为目标运行环境并将面向对象和函数式编程最佳的特性结合的一门编程语言,可以访问Java类库并且与java孔家进行相互操作
- 运行在 JVM 和 和 JavaScript 之上的语言
Scala 不仅利用了 JVM 的高性能以及最优化性,Java 丰富的工具及类
库生态系统也为其所用。不过 Scala 并不是只能运行在 JVM 之上! Scala.js(http://www.scala-js.org)正在尝试将其迁移到 JavaScript 世界
- 静态类型
在 Scala 语言中,静态类型(static typing)是构建健壮应用系统的一个工具,Scala 修正了 Java 类型系统中的一些缺陷,此外通过类型推演(typeinference)也免除了大量的冗余代码
混合式编程范式 混合式编程范式 ——面向对象编程。Scala 引入特征(trait)改进了,trait 能通过使用混合结构(mixin composition)简洁地实现新的类型。在 Scala 中,一切都是对象,即使是数值类型。
混合 混合 式编程范式 ——程 函数式编程
Scala 完全支持函数式编程(FP),函数式编程已经被视为解决并发、大数据以及代码正确性问题的最佳工具。使用不可变值、被视为一等公民的
函数、无副作用的函数、高阶函数以及函数集合,有助于编写出简洁、强大
而又正确的代码。
复杂的类型系统Scala 对 Java 类型系统进行了扩展,提供了更灵活的泛型以及一些有助
于提高代码正确性的改进。通过使用类型推演,Scala 编写的代码能够和动态
类型语言编写的代码一样精简。
简洁、优雅、灵活的语法
使用 Scala 之后,Java 中冗长的表达式不见了,取而代之的是简洁的
Scala 方言。Scala 提供了一些工具,这些工具可用于构建领域特定语言(DSL),以及对用户友好的 API 接口。
可扩展的架构
使用 Scala,你能编写出简短的解释性脚本,并将其粘合成大型的分布式
应用。以下四种语言机制有助于提升系统的扩展性:
(1)使用 trait 实现的混合结构
(2)抽象类型成员和泛型
(3)嵌套类
(4)显式自类型(self type)
扩展:
动态语言和静态语言
1.动态类型语言:是指在运行期间才去做数据类型检查的语言。在用动
态语言编程时,不用给变量指定数据类型,该语言会在你第一次赋值给变
量时,在内部将数据类型记录下来。Python 和 Ruby 就是一种典型的动态类型语言;2.静态类型语言:与动态类型语言刚好相反,它的数据类型检查发生在
在编译阶段,也就是说在写程序时要声明变量的数据类型。C/C++、C#、JAVA 都是静态类型语言的典型代表
强类型语言和弱类型语言
1.强类型语言:使之强制数据类型定义的语言。没有强制类型转化前,
不允许两种不同类型的变量相互操作。强类型定义语言是类型安全的语
言,如 Java、C# 和 Python,比如 Java 中“int i = 0.0;”是无法通过编2.弱类型语言:数据类型可以被忽略的语言。与强类型语言相反, 一个
变量可以赋不同数据类型的值,允许将一块内存看做多种类型,比如直接
将整型变量与字符变量相加。JavaScript、PHP 都是弱类型语言。注意,强类型语言在速度上略逊色于弱类型语言,使用弱类型语言可
节省很多代码量,有更高的开发效率。而对于构建大型项目,使用强类型
语言可能会比使用弱类型更加规范可靠。
面向 XX 编程
面向过程编程:整个程序按照步骤编写,程序更着重业务步骤的。
面向对象编程:提出对象封装概念,将业务修改成对象之间的关系处理。
面向接口编程:更高层次的抽象,将业务抽象成一些接口规则框架。
面向切面编程:另一个思考维度,着重于业务逻辑的动态组织。
命令式编程:关心解决问题的步骤
函数式编程:关心数据的映射,是数学函数,不是程序中的函数概念
What is Scala
Scala 产生于瑞士的洛桑联邦理工学院(EPFL),是“可扩展语言”
(Scalable Language)的缩写,
Sala 是一门静态类型语言
名词解释:
静态类型语言 :
编译期间会发生类型检查,一般是构建比较复杂的架构
动态类型语言
运行期间发生类型检查
按照JAVA虚拟机为目标运行环境并将面向对象和函数式编程最佳的特性结合的一门编程语言,可以访问Java类库并且与java孔家进行相互操作
- 运行在 JVM 和 和 JavaScript 之上的语言
Scala 不仅利用了 JVM 的高性能以及最优化性,Java 丰富的工具及类
库生态系统也为其所用。不过 Scala 并不是只能运行在 JVM 之上! Scala.js(http://www.scala-js.org)正在尝试将其迁移到 JavaScript 世界
- 静态类型
在 Scala 语言中,静态类型(static typing)是构建健壮应用系统的一个工具,Scala 修正了 Java 类型系统中的一些缺陷,此外通过类型推演(typeinference)也免除了大量的冗余代码
混合式编程范式 混合式编程范式 ——面向对象编程。Scala 引入特征(trait)改进了,trait 能通过使用混合结构(mixin composition)简洁地实现新的类型。在 Scala 中,一切都是对象,即使是数值类型。
混合 混合 式编程范式 ——程 函数式编程
Scala 完全支持函数式编程(FP),函数式编程已经被视为解决并发、大数据以及代码正确性问题的最佳工具。使用不可变值、被视为一等公民的
函数、无副作用的函数、高阶函数以及函数集合,有助于编写出简洁、强大
而又正确的代码。
复杂的类型系统Scala 对 Java 类型系统进行了扩展,提供了更灵活的泛型以及一些有助
于提高代码正确性的改进。通过使用类型推演,Scala 编写的代码能够和动态
类型语言编写的代码一样精简。
简洁、优雅、灵活的语法
使用 Scala 之后,Java 中冗长的表达式不见了,取而代之的是简洁的
Scala 方言。Scala 提供了一些工具,这些工具可用于构建领域特定语言(DSL),以及对用户友好的 API 接口。
可扩展的架构
使用 Scala,你能编写出简短的解释性脚本,并将其粘合成大型的分布式
应用。以下四种语言机制有助于提升系统的扩展性:
(1)使用 trait 实现的混合结构
(2)抽象类型成员和泛型
(3)嵌套类
(4)显式自类型(self type)
扩展:
动态语言和静态语言
1.动态类型语言:是指在运行期间才去做数据类型检查的语言。在用动
态语言编程时,不用给变量指定数据类型,该语言会在你第一次赋值给变
量时,在内部将数据类型记录下来。Python 和 Ruby 就是一种典型的动态类型语言;2.静态类型语言:与动态类型语言刚好相反,它的数据类型检查发生在
在编译阶段,也就是说在写程序时要声明变量的数据类型。C/C++、C#、JAVA 都是静态类型语言的典型代表
强类型语言和弱类型语言
1.强类型语言:使之强制数据类型定义的语言。没有强制类型转化前,
不允许两种不同类型的变量相互操作。强类型定义语言是类型安全的语
言,如 Java、C# 和 Python,比如 Java 中“int i = 0.0;”是无法通过编2.弱类型语言:数据类型可以被忽略的语言。与强类型语言相反, 一个
变量可以赋不同数据类型的值,允许将一块内存看做多种类型,比如直接
将整型变量与字符变量相加。JavaScript、PHP 都是弱类型语言。注意,强类型语言在速度上略逊色于弱类型语言,使用弱类型语言可
节省很多代码量,有更高的开发效率。而对于构建大型项目,使用强类型
语言可能会比使用弱类型更加规范可靠。
面向 XX 编程
面向过程编程:整个程序按照步骤编写,程序更着重业务步骤的。
面向对象编程:提出对象封装概念,将业务修改成对象之间的关系处理。
面向接口编程:更高层次的抽象,将业务抽象成一些接口规则框架。
面向切面编程:另一个思考维度,着重于业务逻辑的动态组织。
命令式编程:关心解决问题的步骤
函数式编程:关心数据的映射,是数学函数,不是程序中的函数概念
命令式编程:
修改了存储的内存结构
函数式编程:
想要左边的值,传出去右边的值即 x到y的映射,内存结构没有改变