跳转到内容

Scala

0% developed
来自维基教科书,开放世界的开放书籍
Scala
一种务实的编程语言

Scala 是一种通用语言,旨在支持清晰、简洁和类型安全的编程,以及从最小的应用程序扩展到最大的应用程序。它通过提供复杂类型系统、支持内部 DSL 的简洁灵活语法以及函数式和面向对象范式的集成,以及许多强大的抽象来实现这一点。此外,Scala 与 Java 兼容,现有 Java 库可以从 Scala 调用,反之亦然。这种设计的意义很多。

  • 对于相同代码,Scala 通常比其他通用语言(如 C、C++、C# 和 Java)所需的代码行数少得多,通常是 2-3 倍到 10 倍。这在保持与 Java 相 comparable 的性能的同时完成的。
  • 许多通常需要冗长的语法、内置语法或外部领域特定语言 (DSL) 的常见任务(如 actors、线性代数、数值计算、测试、解析等)可以作为 Scala 的库用简洁的语法提供。示例包括 actor 库,如 Akka;数值编程、线性代数等,如 Breeze;测试,如 ScalaTestspecs2;或解析,如解析器组合器库。
  • 性能、安全性和生产力是三种很难在一种编程语言中获得的领域。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

其他资源

华夏公益教科书