作为一名程序员,我的职业生涯中一直贯穿着这样的主题:寻求更好的抽象和更好的工具来编写更好的软件。经过了这些年,我认为可组合性(composability)是一项比其他特征更重要的特征。如果我们编写的代码具有很好的可组合性,这通常意味着这些代码同样具备软件工程师所看重的其他特征,如正交性(orthogonality)、松耦合性以及高聚合性(high cohesion)。这些都是互通的。

几年前,当我发现 Scala 语言时,它的可组合性便给我带来了很大的震撼。

Martin Odersky 创造 Scala 时,运用了一些简洁的设计方法以及源于面向对象和函数式编程的一些看似简单却很强大的抽象,这使得 Scala 具备高聚合性,而具备了正交性的高度抽象则给这门语言带来可用于软件设计各个方面的可组合性。Scala 是一门真正具备了可扩展性的语言,我们既能使用它编写各种脚本语言,也能使用它实现大规模企业应用和中间件。

Scala 起源于学术界,却已经成长为了一门注重实用性的语言,对于那些真实生产环境中的应用场景,Scala 已经完全准备好了。

《Scala 程序设计》一书的实用性让我感到兴奋。Dean 干得太棒了,除了使用有趣的讨论和示例对 Scala 这门语言进行讲解之外,还将这些内容套到真实世界的应用场景中。这本书是为那些希望能够解决实际问题的程序员所编写的。

几年前,我们还都是面向切面编程委员会的成员时,我认识了 Dean。我很庆幸能够认识他。Dean 拥有一个少见的混合型大脑,他既能思考高深的学术问题,也能想到如何运用实际的方法解决问题。

通过阅读这本书,你将学到如何使用 mixin 和函数组合编写可重用组件;如何运用 Akka 库编写响应式(reactive)应用;如何高效地使用 Scala 提供的一些高级特征,如宏、higher kinded 类型;如何通过 Scala 的丰富、灵活而又富有表现力的语法构造领域特定语言;如何有效地测试你的 Scala 代码;如何通过 Scala 简化大数据问题,等等。

读者们,请好好享受阅读这本书的时光,正如我所做的那样。

——Jonas Bonér

Typesafe 公司联合创始人兼技术总监,2014 年 8 月

目录

  • 版权声明
  • O'Reilly Media, Inc. 介绍
  • 前言
  • 第 1 章 零到六十:Scala 简介
  • 第 2 章 更简洁,更强大
  • 第 3 章 要点详解
  • 第 4 章 模式匹配
  • 第 5 章 隐式详解
  • 第 6 章 Scala 函数式编程
  • 第 7 章 深入学习 for 推导式
  • 第 8 章 Scala 面向对象编程
  • 第 9 章 特征
  • 第 10 章 Scala 对象系统(I)
  • 第 11 章 Scala 对象系统(II)
  • 第 12 章 Scala 集合库
  • 第 13 章 可见性规则
  • 第 14 章 Scala 类型系统(I)
  • 第 15 章 Scala 类型系统(II)
  • 第 16 章 高级函数式编程
  • 第 17 章 并发工具
  • 第 18 章 Scala 与大数据
  • 第 19 章 Scala 动态调用
  • 第 20 章 Scala 的领域特定语言
  • 第 21 章 Scala 工具和库
  • 第 22 章 与 Java 的互操作
  • 第 23 章 应用程序设计
  • 第 24 章 元编程:宏与反射
  • 附录 A 参考文献
  • 作者简介
  • 关于封面