搜索
高级检索
高级搜索
书       名 :
著       者 :
出  版  社 :
I  S  B  N:
文献来源:
出版时间 :
Scala与Clojure函数式编程模式:Java虚拟机高效编程:write lean programs for the JVM
0.00    
图书来源: 浙江图书馆(由图书馆配书)
  • 配送范围:
    全国(除港澳台地区)
  • ISBN:
    9787115388940
  • 作      者:
    (美)Michael Bevilacqua-Linn著
  • 出 版 社 :
    人民邮电出版社
  • 出版日期:
    2015
收藏
编辑推荐
  StackOverflow刚刚发布了2015开发者调查,受程序员喜爱的开发语言中排名前几位的,Clojure和Scala分别位列第五和第六。同时,新一代分布式计算系统Spark不仅在实现中选择了Scala,其提供的编程语言也是Scala。
  所有迹象都显示,诞生50多年后,函数式编程却焕发了青春,越来越受到关注和青睐,从边缘地带步入了主流,除了Scala和Clojure这些新生函数式编程语言大行其道之外,Java等老牌面向对象的编程语言也开始支持匿名函数。函数式编程能简化开发过程,尤其是大型知识管理系统应用程序从中受益良多。
  《Scala与Clojure函数式编程模式:Java虚拟机高效编程》向读者展示了如何采用函数式方案来替代或简化面向对象编程中使用的诸多通用模式,同时还介绍了一些在函数式世界中广泛使用的模式。如果你是一名Java程序员,希望了解函数式编程能为你的工作效率带来多大的提升,或者你是一名刚刚开始使用Scala和Clojure的新手,尚不能玩转函数式的问题解决方案,那么本书就是为你而准备的。
  《Scala与Clojure函数式编程模式:Java虚拟机高效编程》所有代码可免费下载。
展开
作者简介
  Michael Bevilacqua-Linn,康卡斯特杰出工程师,现为该公司的新一代服务的电力基础设施构建分布式系统。他五年级的时候就拖着一台Apple II GS到自己班为同学们解释循环和变量。

  赵震一,一线攻城狮,曾涌入创业洪流,多年未有所成。现居杭州,就职于阿里巴巴。热爱技术,关注互联网与大数据。InfoQ社区编辑,闲暇译一些技术文章,译有《RESTful Web APIs中文版》。
展开
内容介绍
  《Scala与Clojure函数式编程模式:Java虚拟机高效编程》向读者展示了如何采用函数式方案来替代或极大程度地简化在面向对象编程中所使用的许多常用模式,同时还介绍了一些在函数式世界中广泛使用的模式。主要内容包括:函数式编程简介,Java、Scala、Clojure 三种语言中的Tinyweb 对比,函数式编程范式如何替换面向对象编程模式,几种主要的函数式编程范式。
  《Scala与Clojure函数式编程模式:Java虚拟机高效编程》适合所有程序员和对函数式编程感兴趣的读者阅读。
展开
精彩书评
  “本书是函数式编程领域的瑰宝,任何想要从面向对象过渡到函数式编程的开发者都应该读一读。你正在努力跨越这两个截然不同的世界?那么本书就是安全绳,请将它列入必读清单吧!”
  ——Colin Yates,QFI咨询公司技术小组负责人

  “那些经验丰富的面向对象程序员,若想要尝试函数式风格,便是本书的理想读者,本书将会指引他们从熟悉的面向对象模式过渡到函数式模式。”
  ——Rod Hilton,时代华纳有线公司高级工程师

  “本书为函数式模式与面向对象模式的函数式替代方案,分别设置了独立的章节,作者将函数式模式安排在书中偏后的部分,十分方便读者查阅。作为一名Scala程序员,我也能在书中学到一些新的技巧。”
  ——Justin James,康卡斯特软件工程师
展开
精彩书摘

  这是一本有关模式和函数式编程的书,其中的函数式编程采用了Scala和Clojure两种语言进行描述。在本书中,我们向读者展示了如何采用函数式方案来替代或最大程度地简化在面向对象编程中所使用的诸多通用模式,同时还介绍了一些在函数式世界中广泛使用的模式。
  相比原来单一地采用面向对象编程,如果能结合使用这些函数式模式,那么程序员将变得更有效率,同时也能以一种更简洁且更具声明性风格的方式来解决问题。如果你是一名Java程序员,希望了解函数式编程能为你的工作效率带来多大的提升,或者你是一名刚刚开始使用Scala和Clojure的新手,尚不能玩转这些函数式的问题解决方案,那么本书就是为你而准备的。
  在开始深入探讨这些内容之前,我想先来讲一个故事。尽管出于保护隐私的目的修改了一些名字,但这确实是一个真实的故事。
  函数式编程故事一则
  作者:Michael Bevilacqua-Linn,软件消防员
  网站的服务器并没有宕机,但是大量的警报却接踵而来。我们对这个问题进行跟踪并定位到了对我们使用过的第三方API的一组变更。而正是这一组变更导致了我们这一端主要的数据问题。换句话说,我们并不知道这组变更具体改变了什么,也无法找到任何能说明这些变更的人。现在的情况就是,事实表明与该API交互的系统也使用了这些遗留代码,而唯一知道这些代码的运作方式的家伙却正在度假。这是一个大型系统:有足足50万行的Java和OSGi代码量。
  大量寻求支持的电话如潮水般蜂拥而至,失望的客户不顾昂贵的花费,打来支持电话以寻求我们的帮助。必须快速修复这个问题。我启动了一个Clojure REPL,开始毫无头绪地用它来对问题API进行诊断。
  我的老板把头探进了我的办公室。“进展如何?”他问道。“哦,正在处理。”我回应。十分钟之后,老板的老板来了。“怎么样了?”他问道。“在处理。”我回应道。又是十分钟过去了,大老板(老板的老板的老板)来了。“情况如何?”他问道。“还在搞呢。”我回应道。接下来我清净了半小时,直到CTO出现。“还在搞呢。”在他开口之前我就先开了腔。
  一个小时后,我找出了变更的问题所在。我立马提出了一个方案,该方案可以在遗留代码的开发者回来彻底修复该问题前保持数据不被污染。我将编写的用于解决该问题的小程序转交给了运维团队,他们将该程序运行在了一个JVM的安全区域。至此,潮水般的支持电话戛然而止,每个人都松了一口气。
  在大约一周之后的全体会议上,大老板对我上次编写的用于处理故障的Java程序表示了感谢。而我则微笑着告诉他:“那并不是Java。”
  REPL是Clojure的交互式编程环境,它在这个故事里帮了很大的忙。然而,大多数的语言(尤其是非函数式的语言)都拥有相似的交互式编程环境,所以这并不是这个故事的全部。
  本书将要介绍两种模式:模式21“领域特定语言”和模式15“操作链模式”。在圆满处理这场故障中,它们起到了关键作用。
  在早些时候,我就编写了一个领域特定语言的小型实例来配合这些特别的API,即使这些API很庞大,很难从中识别出问题所在,这一方式也能帮助我快速地对这些API进行探查。除此之外,函数式编程所依赖的强大的数据转换工具,例如我们将在模式15中看到的例子,可以帮助我快速地编写代码来收拾故障引起的烂摊子。
  ……

展开
目录
第1章 模式和函数式编程 1
1.1 什么是函数式编程 2
1.2 模式词汇表 4
第2章 TinyWeb:让模式协同工作 7
2.1 TinyWeb简介 7
2.2 采用Java来编写TinyWeb 7
2.3 采用Scala来编写TinyWeb 17
2.4 采用Clojure来编写TinyWeb 25
第3章 替代面向对象模式 35
简介 35
模式1 替代函数式接口 35
模式2 替代承载状态的函数式接口 42
模式3 替代命令模式 48
模式4 替代生成器模式来获得不可变
对象 55
模式5 替代迭代器模式 64
模式6 替代模板方法模式 73
模式7 替代策略模式 81
模式8 替代空对象 87
模式9 替代装饰器模式 95
模式10 替代访问者模式 99
模式11 替代依赖注入 113
第4章 函数式模式 121
简介 121
模式12 尾递归模式 121
模式13 相互递归模式 128
模式14 Filter-Map-Reduce模式 136
模式15 操作链模式 139
模式16 函数生成器模式 146
模式17 记忆模式 159
模式18 惰性序列模式 163
模式19 集中的可变性 172
模式20 自定义控制流 180
模式21 领域特定语言 191
第5章 结束语 201
参考文献 202
展开
加入书架成功!
收藏图书成功!
我知道了(3)
发表书评
读者登录

请选择您读者所在的图书馆

选择图书馆
浙江图书馆
点击获取验证码
登录
没有读者证?在线办证