没有合适的资源?快使用搜索试试~ 我知道了~
首页探索Scala 2.0:融合OO与FP的高效编程语言
探索Scala 2.0:融合OO与FP的高效编程语言
需积分: 9 14 下载量 99 浏览量
更新于2024-07-19
收藏 17.18MB PDF 举报
《Scala程序设计第2版》是一本由[美] Dean Wampler和Alex Payne所著,王渊和陈明翻译的专业编程书籍,隶属于"图灵程序设计丛书"系列,由人民邮电出版社出版。Scala是一种多范式编程语言,旨在融合面向对象编程和函数式编程的特性,它能够在Java虚拟机(JVM)上运行,并能无缝协作于现有的Java程序。 本书深入浅出地介绍了Scala语言,通过大量实用的代码示例,帮助读者理解和掌握如何高效利用Scala及其强大的生态系统。作者强调了Scala在开发高扩展性和数据驱动应用程序中的优势,使得无论是初学者还是经验丰富的开发者都能从中获益。读者可以借助本书学习如何构建高效、可维护的代码,并理解为何Scala是现代软件开发中一个理想的工具。 该书包含31.25印张,约761千字,开本为800mm x 1000mm,1/16开。2016年3月首次出版,印数限定在1-3000册,体现了其在市场上的定位和受欢迎程度。版权方面,本书受O'Reilly Media公司的授权,享有著作权合同登记号图字:01-2015-6359号。 O'Reilly Media作为一家历史悠久的技术出版机构,自1978年起便致力于传播创新知识,推动技术发展,从最早的"动物书"到组织开源软件峰会,始终站在技术变革的前沿。他们通过各种媒介,如图书、在线服务等,连接开发者和创新思想,这本书就是其影响力的体现,旨在帮助读者紧跟技术潮流,塑造未来的软件开发实践。
资源详情
资源推荐
![](https://csdnimg.cn/release/download_crawler_static/10148295/bg10.jpg)
![](https://csdnimg.cn/release/download_crawler_static/10148295/bg11.jpg)
xvii
前言
《
Scala
程序设计》向读者介绍了一门既令人振奋又功能强大的语言,该门语言集合了现代
对象模型
、函数式编程以及先进类型系统的所有优点,同时又能应用获得产业界大量投资
的
J
ava
虚拟机(
JVM
)。这本书通过大量的代码示例,向读者全面阐述了如何使用
Scala
迅速编写代码
,解释了为什么
Scala
是编写可扩展、分布式、基于组件且支持并发和分布
的应用程序的最完美语言
。
Scala
运行在先进的
JVM
平台之上,通过阅读本书,读者还能
了解到
S
cala
是如何发挥
JVM
平台优势的。
如果你想了解更多内容
,请访问
http://programming-scala.org
或查阅本书目录(
http://shop.
oreilly.com/product/0636920033073.do
)。
欢迎阅读
《
Scala
程序设计
(
第
2
版
)》
本书第
1
版出版于
2009
年秋,是当时市面上第三本讲述
Scala
的图书,仅仅因为耽误了几
个月,未能成为第二本。
S
cala
当时的官方版本号为
2.7.5
,而
2.8.0
版则接近完工。
从那时起
,
Scala
世界发生了巨大的变化。编写本书时,
Scala
的版本号为
2.11.2
。为了进
一步提升
S
cala
语言以及相关工具,
Scala
的创建者
Martin Odersky
与基于
actor
模型的并
发框架
A
kka
的作者
Jonas Bonér
一同创立了
Typesafe
(
http://typesafe.com
)公司。
现在已经出版了很多
S
cala
的图书,我们真的有必要再推出第
2
版吗?市场上现存不少适
合初学者的
S
cala
指南,也出现了一些供高级学习者使用的图书,由
Artima
出版
Odersky
等人撰写的《
S
cala
编程(第
2
版)》仍被视为
Scala
语言的百科全书。
然而
,本书第
2
版非常完整地描述了
Scala
语言及其生态系统,既为初学者成为
Scala
高级
用户提供了所需要的指导
,又关注了开发人员所面对的实用性问题,这是本书独一无二的
地方,也是第
1
版
广受欢迎的原因所在。
与
2
009
年相比,现在有更多的机构选用了
Scala
,大多数
Java
开发者也都听说过这门语
言。同时
,也出现了一些针对
Scala
语言的持续质疑。
Scala
是不是太复杂了?
既然
Java 8
已经引入了一些
S
cala
特性,那还有必要使用
Scala
吗?
![](https://csdnimg.cn/release/download_crawler_static/10148295/bg12.jpg)
xviii
|
前言
对于真实世界中的种种质疑,我将一一解答。我常常说,
Scala
的一切,包括它的不足之
处,都让我为之着迷。我希望读者阅读完本书也会有同感。
如何阅读本书
本书论述全面,初级读者无须阅读所有内容便可以使用
Scala
进行编程。本书的前
3
章
“零到六十:
Scala
简介”“更简洁,更强大”和“要点详解”,简要概括了
Scala
的核心语
言特性。
第
4
章“模式匹配”和第
5
章“隐式详解”描述了使用
Scala
编程时每天都会用
到的两类基本工具,通过对这两类工具的描述将读者引领到更深的领域里。
函数式编程
(
FP
)是一种重要的软件开发方案,假如你之前从未接触过
FP
,那么阅读第
6
章能通过
S
cala
学习函数式编程。紧接着第
7
章,将说明
Scala
对
for
循环的扩展,以及如
何使用该扩展提供的简洁语法实现复杂而又符合规范的函数式代码。
之后
,第
8
章将介绍
Scala
是如何支持面向对象编程(
OOP
)的。为了强调
FP
对于解决软
件开发问题的重要性
,我将
FP
相关章节放到
OOP
章节之前。如果将
Scala
当作“更好的
面向对象的
J
ava
”,那会较容易上手,但这样会丢掉这门语言最有力的工具。第
8
章的大
多数内容在概念上很容易理解
,读者将学到在
Scala
中如何定义类、构造函数等与
Java
相
似的概念。
第
9
章将继续探索
S
cala
的功能——使用
trait
对行为进行封装。
Java 8
受到了
Scala trait
机
制的影响
,通过对接口进行扩展,新增了部分
trait
功能。对于这部分内容而言,即便是有
经验的
J
ava
程序员也需要花时间理解。
接下来的
4
章
,从第
10
章到第
13
章,“
Scala
对象系统(
I
)”“
Scala
对象系统(
II
)”“
Scala
集合库”以及
“可见性规则”,详细地讲解了
Scala
的对象模型和库类型。由于第
10
章包
含了一些必须要尽早掌握的基本知识
,因此阅读时要务必仔细。第
11
章讲述了如何正确
地实现普通类型层次
,你可以在第一遍阅读本书时略过这一章。第
12
章讨论了集合设计
问题并提供了合理使用集合的相关信息
。再重申一遍,假如你初次接触
Scala
,那么请先
略过此章
,当你试图掌握集合类
API
的详细内容时,再回来学习。最后,第
13
章详细解
释了
S
cala
是如何对
Java
的
public
、
protected
以及
private
可见性概念进行细粒度扩展的。
可以快速阅览此章。
从第
1
4
章开始,我们将进入更高级的主题:
Scala
复杂类型。这部分内容划分为两章:第
14
章包含了
S
cala
新手相对容易理解的概念,而第
15
章则讲述了更高级的内容,你可以
选择以后再进行阅读。
类似地
,第
16
章“高级函数式编程”讲述的内容中包括了更多高级的理论概念,例如,
Monad
和仿函式
(
Functor
)这些起源于范畴论的概念。一般水平的
Scala
开发者在最初并
不需要掌握这些内容。
第
1
7
章“并发工具”有助于开发大型服务的程序员实现并发性的可伸缩性和可扩展性。
这一章既论述了
A
kka
这一基于
actor
的富并发模型,又讲述了像
Future
这类有助于编写
异步代码的库类型。
![](https://csdnimg.cn/release/download_crawler_static/10148295/bg13.jpg)
前言
|
xix
第
18
章“
Scala
与大数据”,通常而言,在大数据以及其他以数据为中心的计算领域里,应
用
S
cala
和函数式编程能够构造
杀手级
应用。
第
1
9
章“
Scala
动态调用”和第
20
章“
Scala
的领域特定语言”是较为高级的专题,探讨
了可用于构建富领域特定语言的一些工具。
第
2
1
章“
Scala
工具和库”讨论了一些
IDE
和第三方库。假如你是
Scala
新手,那么请阅
读
I
DE
和编辑器支持的相关小节,同时阅读关于
Scala
公认的项目构建工具:
SBT
的相关
小节
。本章最后列出了可以引用的库列表。第
22
章“与
Java
的互操作”对于那些需要互
用
J
ava
和
Scala
代码的团队而言很有帮助。
第
2
3
章“应用程序设计”是为架构师和软件组长而写的。我在这一章分享了自己在应用
设计方面的一些观点
。传统模式使用了相对较大的
JAR
文件,而这些
JAR
文件又包含了
复杂的对象图谱。因此我认为这种模式是一种不良模式,需要进行变更。
最后
,第
24
章“元编程:宏与反射”介绍了本书最高级的主题。当然,如果你是初学者,
也可以略过这一章。
本书在附录
A
中
总结了一些资料,供读者进一步阅读。
本书未涉及的内容
模块化库是
Scala
最新的
2.11
版的一大焦点,它将库文件分解成更小的
JAR
文件,这样
一来
,在将系统部署到空间受限的环境时(如手机设备),便能很容易移除不需要的代码。
除此之外
,新版移除了库中一些原本被标示为“过时”(
deprecated
)的包和类型,还将其
他的一些包和类型标示为
d
eprecated
,这通常是因为
Scala
不再维护这些包和类型,而且有
更好的第三方的替代品。
因此,我们不会在本书中讨论那些在
2
.11
版本中被标示为
deprecated
的包,具体如下。
scala.actors
http://www.scala-lang.org/api/current/scala-actors/#scala.actors.package
一套
a
ctor
库。请使用
Akka actor
库。(我们将在
17.3
节对该库进行描述。)
scala.collection.script
http://www.scala-lang.org/api/current/#scala.collection.script.
package
该库用于编写监控集合以及更新集合相关“脚本”。
scala.text
http://www.scala-lang.org/api/current/#scala.text.package
一套用于“格式化打印”(
p
retty-printing
)的库。
下面列举了在
S
cala 2.10
中标示为
deprecated
并已从
2.11
版移除的包。
scala.util.automata
http://www.scala-lang.org/api/2.10.4/#scala.util.automata.package
使用正则表达式构建确定有限自动机(
D
FA
)。
scala.util.grammar
http://www.scala-lang.org/api/2.10.4/#scala.util.grammar.package
属于
p
arsing
库。
![](https://csdnimg.cn/release/download_crawler_static/10148295/bg14.jpg)
xx
|
前言
scala.util.logging
http://www.scala-lang.org/api/2.10.4/#scala.util.logging.package
推荐使用某一
J
VM
平台上活跃的第三方日志库。
scala.util.regexp
http://www.scala-lang.org/api/2.10.4/#scala.util.regexp.package
对正则表达式进行句式分析
。
scala.util.matching
包同样支持正则表达式,请使用功
能更为强大的
scala.util.matching
包。
.NET
Scala
团队曾在
.
NET
运行的环境之上搭建编译器后台及库。不过由于大家对这次迁移
的兴趣不断衰减,因此这项工作已经暂停。
我们不会对
S
cala
库中每个包和类型都进行讨论。由于篇幅和其他原因,下面这些包并不
会在本书中提及。
scala.swing
http://www.scala-lang.org/api/current/scala-swing/#scala.swing.package
对
J
ava Swing
库进行封装。尽管仍然有人维护该库,但已很少有人使用它。
scala.util.continuations
http://www.scala-lang.org/files/archive/api/current/scala-
continuations-library/#scala.util.continuations.package
编译器插件
,用于生成连续传递格式(
continuation-passing style
,
CPS
)的代码。这是
一个特殊的工具,目前很少有人使用它。
App
http://www.scala-lang.org/api/current/#scala.App
DelayedInit
http://www.scala-
lang.org/api/current/#scala.DelayedInit
使用这两个类型能很方便地实现
main
类型(入口类型),它们也是
Java
类中
static
main
方法的同义词。不过由于它们有时候会导致奇怪的行为,因此我并不推荐使用它
们。我会使用通用的、符合规范的
S
cala
方法编写
main
方法。
scala.ref
http://www.scala-lang.org/api/current/#scala.ref.package
对某些
J
ava
类型进行了封装,如
WeakReference
,这是
java.lang.ref.WeakReference
的
封装类。
scala.runtime
http://www.scala-lang.org/api/current/#scala.runtime.package
用于实现类库的类型。
scala.util.hashing
http://www.scala-lang.org/api/current/#scala.util.hashing.package
提供了多种散列算法。
欢迎阅读
《
Scala
程序设计
(
第
1
版
)》
一门编程语言能够流行起来是有一定原因的。有时候,某一平台的程序员会青睐于某一特
定语言或平台提供商所建议的语言
。大多数
Mac OS
开发者习惯使用
Objective-C
,大多数
Windows
平
台开发者使用
C++
和
.NET
语言,而嵌入式系统开发者则使用
C
和
C++
。
剩余499页未读,继续阅读
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/1e45a55e832c440687da281372cc1b35_zsquirrel.jpg!1)
Zsquirrel
- 粉丝: 0
- 资源: 3
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
最新资源
- 解决本地连接丢失无法上网的问题
- BIOS报警声音解析:故障原因与解决方法
- 广义均值移动跟踪算法在视频目标跟踪中的应用研究
- C++Builder快捷键大全:高效编程的秘密武器
- 网页制作入门:常用代码详解
- TX2440A开发板网络远程监控系统移植教程:易搭建与通用解决方案
- WebLogic10虚拟内存配置详解与优化技巧
- C#网络编程深度解析:Socket基础与应用
- 掌握Struts1:Java MVC轻量级框架详解
- 20个必备CSS代码段提升Web开发效率
- CSS样式大全:字体、文本、列表样式详解
- Proteus元件库大全:从基础到高级组件
- 74HC08芯片:高速CMOS四输入与门详细资料
- C#获取当前路径的多种方法详解
- 修复MySQL乱码问题:设置字符集为GB2312
- C语言的诞生与演进:从汇编到系统编程的革命
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)