Scala
Scala 是一种通用语言,旨在支持清晰、简洁和类型安全的编程,以及从最小的应用程序扩展到最大的应用程序。它通过提供复杂类型系统、支持内部 DSL 的简洁灵活语法以及函数式和面向对象范式的集成,以及许多强大的抽象来实现这一点。此外,Scala 与 Java 兼容,现有 Java 库可以从 Scala 调用,反之亦然。这种设计的意义很多。
- 对于相同代码,Scala 通常比其他通用语言(如 C、C++、C# 和 Java)所需的代码行数少得多,通常是 2-3 倍到 10 倍。这在保持与 Java 相 comparable 的性能的同时完成的。
- 许多通常需要冗长的语法、内置语法或外部领域特定语言 (DSL) 的常见任务(如 actors、线性代数、数值计算、测试、解析等)可以作为 Scala 的库用简洁的语法提供。示例包括 actor 库,如 Akka;数值编程、线性代数等,如 Breeze;测试,如 ScalaTest 或 specs2;或解析,如解析器组合器库。
- 性能、安全性和生产力是三种很难在一种编程语言中获得的领域。Scala 在这三个方面都提供了高度的保证。Scala 拥有与脚本语言相关的生产力,同时具有与 Java 相 comparable 的性能。静态且复杂的类型系统、强大的抽象以及对引用透明性和不可变性的支持有助于提高用 Scala 编写的程序的安全、清晰度和可靠性。
- 对并行和并发编程的相当大的支持。示例包括 actor 库、不可变集合、并行集合和 STM(参见 Akka)。
- 支持从 Java 向 Scala 的逐渐迁移。例如,可以通过用 Scala 编写新的测试模块来逐步引入 Scala。
截至 2012 年 7 月 5 日,该语言的当前实现正在为 Java 虚拟机积极开发,并且正在进行支持 .NET 框架的工作。
由于该语言的深度、许多强大的抽象和复杂的类型系统,Scala 有时被视为一种难以学习的语言。虽然 Scala 的某些部分对大多数程序员来说绝对具有挑战性,但有效使用 Scala 所需的知识和技能要容易得多。本书将不同主题分为学习 Scala 所需的不同知识层。这些层次并不总是代表难度。例如,一些人认为高阶函数很难,但由于它们非常有用,因此在本书的基础部分进行了描述。
如果您是 Java 程序员,则存在一些专门针对 Java 程序员的指南、资源和书籍。有关更多信息,请参阅 https://scala-lang.org.cn/node/1305#Java。
概述
本书分为几部分:基础、中级和高级。
“基础”介绍了如何设置 Scala,并介绍了基本语法、表达式、函数、基本面向对象编程和基本函数式编程。它还介绍了列表、case 类和模式匹配。基础中的文章包含了用 Scala 编写简单程序的足够知识。
“中级”扩展了基础中的知识。这包括高级函数式和面向对象编程、类型安全编程以及对集合库的介绍。中级中的知识应该足以有效地将 Scala 用于许多应用程序。
“高级”描述了用于编写库的功能,例如高阶类型和隐式。
本书应该包含关于不同主题的简短、鼓舞人心且易于理解的文章。这些文章不应花太多时间解释为什么功能是这样的,或者描述每一个细节。原因是这本书旨在成为学习资源,涵盖所有不重要的细节可能会阻碍学习并浪费读者的时间。对于想要更全面涵盖和文档的读者,存在许多资源,例如 https://docs.scala-lang.org.cn/、O'Reilly 的《Programming Scala》和 Artima 的《Programming in Scala》。
基础
第一步 |
面向对象编程 1 |
函数式编程 1 |
列表、case 类和模式匹配 |
中级
通用 |
面向对象编程 2 |
函数式编程 2 |
类型 1 |
集合 |
可选 |
高级
通用 |
类型 2 |