没有合适的资源?快使用搜索试试~ 我知道了~
首页Scala编程入门:探索Actor模型与并发实战
Scala编程入门:探索Actor模型与并发实战
需积分: 39 0 下载量 165 浏览量
更新于2024-07-19
收藏 1.49MB PDF 举报
"《Scala编程》是一本由Scala语言的创始人马丁·奥德斯科伊(Martin Odersky)、博士后莱克斯·斯普恩(Lex Spoon)以及Artima公司总裁比尔·范内尔斯(Bill Venners)合著的专业书籍,旨在为初学者提供对Scala语言及其并发式编程模型Actor的学习指南。本书在2007年以预印版形式首次发布,随后在2008年正式出版。 Scala是一种结合了面向对象和函数式编程特性的编程语言,作者在书中详细介绍了其语法和实例,内容包括第一章的可伸缩性介绍,逐步深入到类和对象、基本类型与操作、函数式编程元素、内建控制结构、函数和闭包、控制抽象、组合与继承、Scala的层次结构、特质、包和引用等核心概念。作者还提供了针对Unix和Windows环境的Scala安装和使用指南,确保读者能在实际环境中应用所学知识。 本书特别强调了并发编程模型Actor,这是一种基于消息传递的编程模式,有助于理解如何在Scala中编写高效的并行和分布式程序。通过阅读这本书,读者不仅能够掌握Scala语言的基础,还能学习到如何利用其特性来解决复杂的并发问题。 版权信息显示,本书未经Artima公司的许可,禁止任何形式的商业或非商业复制、修改、分发等行为。所有章节的信息都是以原样提供,不承担任何形式的保证责任,同时提及的专有名词如Artima和相关标志图案都是Artima公司的商标,其他公司和产品名称同样受其所有者保护。 本书适合那些希望学习或进一步提升Scala技能,尤其是对并发编程感兴趣的开发者,无论是作为入门教材还是参考手册,都具有很高的实用价值。"
资源详情
资源推荐
前导
Martin Odersky 用他定义的匹萨语言给了 Java 世界一个很大的冲击。尽管匹萨本身没有
流行过,但它展现了当把面向对象和函数型语言两种风格,技术地且很有品地混搭在一起时,
就形成了一个自然和强有力的组合。匹萨的设计成为了 Java 泛型的基础,马丁的 GJ
(Generic Java)编译器从 Java 1.3 开始成为了 Sun 微系统的标准编译器(尽管关闭了泛
型)。我有幸能够维护这个编译器多年,因此我能通过第一手经验从语言设计到语言的实现
方面(向大家)报告马丁的技术。
那时候我们还在 Sun 公司,尝试用一些零打碎敲的特定问题解决方案来扩展语言,如
for-each 循环,枚举,自动装包,去简化程序开发的时候,马丁则继续着他在更强大的正
交语言原语方面的工作以帮助程序员用库来提供解决方案。
后来,静态类型语言受到了冲击。Java 的经验说明了静态语言编程会导致大量的固定写法
的代码。通常认为我们应该避免静态类型从而消除这种代码,于是人们对动态语言如 Python,
Ruby 和 Groovy 的兴趣开始增加。这种认知被马丁最近的作品,Scala,的出现打破。
Scala 是一种很有
品味的类型语言:它是静态类型的,但仅需在必要的地方显式定义类型。
Scala 从面向对象和函数式语言两方面获得了强大的特性,然后用一些新奇的点子把它们优
美地整合成一体。它的语法是如此的轻量级,而原语又如此富有表达力,以至于根本可以认
为 API 的使用不须负担语法开销。我们可以在标准库中,如拆分器、组合器和执行器,中
发现例子。从这点上看,Scala 是一种支持
内嵌的领域特化:embedded domain-specific 的
语言。
Scala 会成为下一个伟大的语言吗?时间可以说明一切。Martin Odersky 的小组绝对有这
样的品味和技术做到这一点。有一件事可以确信:Scala 语言设定了一个衡量未来语言的新
标准。
Neal Gafter
圣约瑟,加利福尼亚
2008 年 9 月 3 日
致谢
许多人持续地关注本书及其相关的资料。在这里表示感谢。
Scala 语言本身已经成为了许多人努力的集合。版本 1.0 的设计和实现受到了 Philippe
Altherr,Vincent Cremet,Gilles Dubochet,Burak Emir,Stéphane Micheloud,
Nikolay Mihaylov,Michel Schinz,Erik Stenman 和 Matthias Zenger 等人的帮助。
Iulian Dragos,Gilles Dubochet,Philipp Haller,Sean McDirmid,Ingo Maier 和
Adriaan Moors 参与了第二版和当前版语言及工具开发的努力。
Gilad Bracha , Craig Chambers , Erik Ernst , Matthias Felleisen , Shriram
Krishnamurti,Gary Leavens,Sebastian Maneth,Erik Meijer,David Pollak,Jon
Pretty,Klaus Ostermann,Didier Rémy,Vijay Saraswat,Don Syme,Mads Torgersen,
PhilipWadler,Jamie Webb 和 JohnWilliams 通过生动和启发性的讨论,或者对此篇文
稿早期版本的评注,热情地与我们分享了他们的观点,从而使得语言的设计成型。Scala 语
言电邮列表的建设者们同样提供了非常有用的反馈信息来帮助我们改善语言和它的工具。
George Berger 付出了极大努力于建造过程和本书流畅的 Web 体验。令人欣慰的结果就是
这个项目没有变成一个技术大杂烩。
许多人给我们的早期版本提供了反馈信息。在这里感谢 Eric Armstrong,George Berger,
Gilad Bracha,William Cook,Bruce Eckel,Stéphane Micheloud,Todd Millstein,
David Pollak,Frank Sommers,Philip Wadler 和 Matthias Zenger。同样感谢硅谷模
式组成员他们大为助益的审校:Dave Astels,Tracy Bialik,John Brewer,Andrew Chase,
Bradford Cross,Raoul Duke,John P. Eurich,Steven Ganz,Phil Goodwin,Ralph
Jocham,Yan-Fa Li,Tao Ma,Jeffery Miller,Suresh Pai,Russ Rufer,Dave W. Smith,
Scott Turnquest,Walter Vannini,Darlene Wallach,and Jonathan Andrew Wolter。
我们还要感谢 Dewayne Johnson 和 Kim Leedy 在封面设计上的帮助,还有 Frank
Sommers 在索引上的工作。
我们要提出特别感谢给我们所有给我们建设性评价的读者。你们的评价非常有助于我们把本
书做得更好。我们没办法印出所有提供了评论的名字,但以下是在 eBook 预印刷阶段通过
点击建议链接提供了至少五条评论的读者名单,首先以最高评论数排序,然后是字母顺序,
感谢这些人:David Biesack,Donn Stephan,Mats Henricson,Rob Dickens,Blair Zajac,
Tony Sloane,Nigel Harrison,Javier Diaz Soto,William Heelan,Justin Forder,
Gregor Purdy,Colin Perkins,Bjarte S. Karlsen,Ervin Varga,Eric Willigers,Mark
Hayes,Martin Elwin,Calum MacLean,Jonathan Wolter,Les Pruszynski,Seth Tisue,
Andrei Formiga,Dmitry Grigoriev,George Berger,Howard Lovatt,John P. Eurich,
Marius Scurtescu,Jeff Ervin,Jamie Webb,Kurt Zoglmann,Dean Wampler,Nikolaj
Lindberg,Peter McLain,Arkadiusz Stryjski,Shanky Surana,Craig Bordelon,
Alexandre Patry,Filip Moens,Fred Janon,Jeff Heon,Boris Lorbeer,Jim Menard,
Tim Azzopardi,Thomas Jung,Walter Chang,Jeroen Dijkmeijer,Casey Bowman,
Martin Smith ,Richard Dallaway,Antony Stubbs,Lars Westergren , Maarten
Hazewinkel, Matt Russell, Remigiusz Michalowski ,Andrew Tolopko,Curtis
Stanford,Joshua Cough,Zemian Deng,Christopher Rodrigues Macias,Juan Miguel
内容 xviii
Garcia Lopez,Michel Schinz,Peter Moore,Randolph Kahle,Vladimir Kelman,
Daniel Gronau,Dirk Detering,Hiroaki Nakamura,Ole Hougaard,Bhaskar Maddala,
David Bernard,Derek Mahar,George Kollias,Kristian Nordal,Normen Mueller,
Rafael Ferreira,Binil Thomas,John Nilsson,Jorge Ortiz,Marcus Schulte,Vadim
Gerassimov , Cameron Taggart , Jon-Anders Teigen , Silvestre Zabala , Will
McQueen,还有 Sam Owen。
最后,Bill 还要感谢 Gary Cornell,Greg Doench,Andy Hunt,Mike Leonard,Tyler
Ortman,Bill Pollock,Dave Thomas 和 Adam Wright 对本书出版方面提供的观点和建
议。
介绍
本书是一份 Scala 编程语言的教程。写给那些直接参与 Scala 开发的人群。我们的目标是通
过阅读此书,你能够学会一切所需,成为多产的 Scala 程序员。本书中所有的例子都能在
Scala 版本 2.7.2 下面编译通过。
谁应该阅读此书
本书的主要目标读者是那些想要学习使用 Scala 编程的程序员。如果你想要用 Scala 做你的
下一个软件项目,那么本书是为你准备的。而且,本书希望能使那些希望拓展视界的程序员
们通过学习一些新概念而获得趣味。打个比方,如果你是一位 Java 程序员,阅读本书将使
你领略从函数型编程到高级面向对象思想的许多概念。我们相信学习 Scala,还有它隐含的
理念,通常都能帮你成为一个更好的程序员。
本书假设你已经有了通常的编程知识。当然 Scala 也可以很好的做为首次学习的编程语言,
但这不是学习如何编程的书。
从另一方面来说,本书并不需要特定的编程语言知识。尽管大多数人在 Java 平台上使用
Scala 语言,但本书并不预设你知道任何关于 Java 的事情。然而,我们希望读者能够熟悉
Java,这样我们可以在某些时候通过比较 Scala 和 Java 来帮助这些读者明白其中的差别。
如何使用本书
因为本书的主要目的是作为教材,所以推荐的阅读方式就是按照章节的次序,从头到尾。我
们尽力一次介绍一个话题,并且 仅以介绍过话题来说明新的话题。因此,如果你跳到后面去
先睹为快,你可能会发现有些东西是用你不太明白的概念解释的。如果按照章节的顺序阅读,
我们认为你将发现一步一个脚印的方式将引导你顺利地获得 Scala 开发的能力。
如果你发现一个你不懂的术语,请一定查找一下术语表和索引。许多读者会简单略过书中的
某些部分,这也可以。术语表和索引有助于你返回到你略过的某些东西。
在你读完一遍之后,本书还可以做为一份语言参考书。Scala 语言有一个正式的定义,但是
语言的定义是以可读性为代价要求精确性的文档。尽管本书并未涵盖 Scala 的所有细节,但
它在你更好地掌控 Scala 编程之前,作为一本平易近人的语言参考书已足够全面。
如何学习 Scala
简单地通读本书,你将学到 Scala 的许多东西。但如果再只多做很少的事情,你将更快更全
面地了解 Scala。
首先,你可以好好地利用本书中包括的许多编程例子。尝试自己输入是一个强迫你的大脑思
考每一行代码的方式。尝试各种各样的变化是让它们变得更有趣也是让你确信你已真正明白
它们如何工作的方法。
介绍 xx
第二点,与多个在线论坛保持联系。采用这种方式,你和其他 Scala 痴迷者能够互相帮助。
还有许多的电邮列表,讨论论坛,和聊天室,维基百科和多个特别为 Scala 准备的文档资料
更新点。花些时间来查找包含你需要的信息的地方。这样,花更少的时间在小问题上,就能
花更多的时间在更深入和更重要的地方。
最后,一旦你已经读得够多了,请把它用在你自己的编程项目上。从草案开始开发一个小程
序,或大一点儿程序的附加部分。仅仅看书只能走到这么远。
电子书的特点
本书有纸面和 PDF 电子书两种形式。电子书并不仅仅是纸版书的可打印版本。虽然其内容
与纸版书没有差别,但电子书已经(被)为在电脑屏幕上阅读做了仔细的设计和优化。
第一件要提的事就是书里面的大多数参考是超链接的。如果你选择一个到某个章节、图片、
或者术语表的参考,你的 PDF 阅览器将立刻带你到选中的条目,从而避免你为了找到它翻
遍全书。
另外,每页的底部有许多导引链接。“封面”,“概要”和“内容”链接将带你到本书的主要
入口。“术语表”和“索引”链接将带你到本书的参考部分。最后,“讨论”链接将带你到在
线论坛和其他读者、作者以及更大的 Scala 社区讨论问题。若你发现了一处印刷,或者什么
东西你认为能够解释得更好的地方,请点击“建议”链接,带你到在线 Web 应用,并反馈
给作者。
电子书里的页面除了空白页面被移除,剩余的页面重新排列编码外和打印出来的书没什么差
别。页面的计数不同,这样当你想打印电子书的某些部分时,可以很容易地决定 PDF 页面
的号码。所以,电子书的每一页的页码都和你在 PDF 阅读器中看到的页码一样。
印刷体变化
首次使用的术语:term,将被倾斜显示(加粗)。小代码例子,如 x+1,将用等宽字体显示
在文档段落中。大段的代码例子将放在等宽字体的段落中显示:
def hello() {
println("Hello, world!")
}
在显示交互式 shell 的时候,shell 的回应将显示为较亮的字体。
scala> 3 + 4
res0: Int = 7
内容概要
第 1 章,“ 可伸展的语言”,给出了 Scala 的设计,和它后面的理由,历史的概要。
第 2 章, “ Scala 的第一步”,展示给你如何使用 Scala 完成若干种基本编程任务,而不
剩余182页未读,继续阅读
city20200106
- 粉丝: 7
- 资源: 21
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 多模态联合稀疏表示在视频目标跟踪中的应用
- Kubernetes资源管控与Gardener开源软件实践解析
- MPI集群监控与负载平衡策略
- 自动化PHP安全漏洞检测:静态代码分析与数据流方法
- 青苔数据CEO程永:技术生态与阿里云开放创新
- 制造业转型: HyperX引领企业上云策略
- 赵维五分享:航空工业电子采购上云实战与运维策略
- 单片机控制的LED点阵显示屏设计及其实现
- 驻云科技李俊涛:AI驱动的云上服务新趋势与挑战
- 6LoWPAN物联网边界路由器:设计与实现
- 猩便利工程师仲小玉:Terraform云资源管理最佳实践与团队协作
- 类差分度改进的互信息特征选择提升文本分类性能
- VERITAS与阿里云合作的混合云转型与数据保护方案
- 云制造中的生产线仿真模型设计与虚拟化研究
- 汪洋在PostgresChina2018分享:高可用 PostgreSQL 工具与架构设计
- 2018 PostgresChina大会:阿里云时空引擎Ganos在PostgreSQL中的创新应用与多模型存储
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功