-
内容大纲
本书介绍了一系列核心的编程语言结构,可让你的编程工作变得高效起来,无论你使用的是哪种编程语言,你都能从中获益。Charpentier用大量重点突出的小型Scala代码示例阐释了函数式与并发编程的关键概念,并通过完整的案例研究对前述技术和技巧进行深入的探究和阐释。这些技术和技巧将从一种语言传递到另一种语言——包括Java的最新版本。利用函数式和并发编程语言特性,开发人员和程序员将能编写出易于理解、调试、优化和改进的优质代码。另外,本书还讨论了现代编程语言中常用的类型策略,包括类型推断、子类型、多态性、类型类、类型边界和变型。 -
作者介绍
米歇尔·卡彭特(Michel Charpentier),是美国新罕布什尔大学(UNH)计算机科学系的副教授。多年来,他一直致力于分布式系统、正式验证以及移动传感器网络等领域的研究。自1999年以来,他一直在UNH工作,目前正在讲授编程语言、并发性、形式验证和模型检查等课程。 -
目录
第Ⅰ部分 函数式编程
第1章 函数式编程的概念
1.1 什么是函数式编程
1.2 函数
1.3 从函数到函数式编程概念
1.4 小结
第2章 编程语言中的函数
2.1 定义函数
2.2 合成函数
2.3 定义为方法的函数
2.4 定义为方法的运算符
2.5 扩展方法
2.6 局部函数
2.7 重复参数
2.8 可选参数
2.9 命名参数
2.10 类型参数
2.11 小结
第3章 不可变性
3.1 纯函数和非纯函数
3.2 动作
3.3 表达式与语句
3.4 函数变量
3.5 不可变对象
3.6 可变状态的实现
3.7 函数式列表
3.8 混合编程
3.9 更新可变/不可变对象的集合
3.10 小结
第4章 案例研究:active-passive集合
4.1 面向对象设计
4.2 函数值
4.3 函数对象
4.4 小结
第5章 模式匹配与代数数据类型
5.1 函数开关
5.2 元组
5.3 选项
5.4 回顾函数式列表
5.5 树
5.6 示例:列表拉链
5.7 提取器
5.8 小结
第6章 递归程序设计
6.1 递归的必要性
6.2 递归算法
6.3 递归算法的关键原理
6.4 递归结构
6.5 尾递归
6.6 尾递归函数示例
6.7 小结
第7章 列表递归
7.1 等价的递归算法
7.2 遍历列表
7.3 返回列表
7.4 从执行堆栈中构建列表
7.5 多个/嵌套列表上的递归
7.6 除尾部以外的子列表递归
7.7 逆序创建列表
7.8 示例:排序
7.9 高效地构建列表
7.10 小结
第8章 案例研究:二叉搜索树
8.1 二叉搜索树
8.2 二叉搜索树的整数集
8.3 未重新平衡情况下的实现
8.4 自平衡树
8.5 小结
第9章 高阶函数
9.1 函数作为值
9.2 柯里化
9.3 函数字面量
9.4 函数与方法
9.5 单一抽象方法接口
9.6 部分应用
9.7 闭包
9.8 控制反转
9.9 小结
第10章 标准高阶函数
10.1 带有谓词参数的函数
10.2 映射和遍历
10.3 flatMap
10.4 fold和reduce
10.5 iterate、tabulate和unfold
10.6 sortWith、sortBy、maxBy和minBy
10.7 groupBy和groupMap
10.8 标准高阶函数的实现
10.9 foreach、map、flatMap和for推导式
10.10 小结
第11章 案例研究:文件树
11.1 设计概述
11.2 节点搜索辅助函数
11.3 字符串表示
11.4 构建树
11.5 查询
11.6 导航
11.7 树形拉链
11.8 小结
第12章 延迟计算
12.1 延迟求值的参数
12.2 按名称参数
12.3 控制抽象
12.4 内部领域特定语言
12.5 作为延迟求值列表的流
12.6 管道流
12.7 无限数据结构流
12.8 迭代
12.9 列表、流、迭代程序和视图
12.10 字段和局部变量的延迟求值
12.11 示例:子集和
12.12 小结
第13章 故障处理
13.1 例外情况和特殊值
13.2 使用Option
13.3 使用Try
13.4 使用Either
13.5 高阶函数和管道
13.6 小结
第14章 案例研究:蹦床
14.1 尾调用优化
14.2 用于尾调用的蹦床函数
14.3 Java中的尾调用优化
14.4 处理非尾调用
14.5 小结
第15章 类型(及相关概念)
15.1 类型策略
15.2 类型集合
15.3 类型服务
15.4 抽象数据类型
15.5 类型推断
15.6 子类型
15.7 多态性
15.8 类型变换
15.9 类型边界
15.10 类型类
15.11 小结
第Ⅱ部分 并发编程
第16章 并发编程的概念
16.1 非顺序程序
16.2 并发编程相关概念
16.3 小结
第17章 线程与不确定性
17.1 执行线程
17.2 使用lambda表达式创建线程
17.3 多线程程序的不确定性
17.4 线程终止
17.5 测试和调试多线程程序
17.6 小结
第18章 原子性和锁
18.1 原子性
18.2 非原子操作
18.3 原子操作和非原子复合操作
18.4 锁
18.5 内部锁
18.6 选择锁目标
18.7 小结
第19章 线程安全对象
19.1 不可变对象
19.2 封装同步策略
19.3 避免引用转义
19.4 公用锁和私有锁
19.5 利用不可变类型
19.6 线程安全
19.7 小结
第20章 案例研究:线程安全队列
20.1 作为列表对组的队列
20.2 单个公用锁的实现
20.3 单个私有锁的实现
20.4 应用锁拆分
20.5 小结
第21章 线程池
21.1 即发即弃异步执行
21.2 示例:并行服务器
21.3 不同类型的线程池
21.4 并行集合
21.5 小结
第22章 同步
22.1 同步的必要性
22.2 同步器
22.3 死锁
22.4 使用线程转储调试死锁
22.5 Java内存模型
22.6 小结
第23章 常用同步器
23.1 锁
23.2 锁存器和栅栏
23.3 信号量
23.4 条件
23.5 阻塞队列
23.6 小结
第24章 案例研究:并行执行
24.1 顺序引用实现
24.2 每个任务一个新线程
24.3 有界线程数
24.4 专用线程池
24.5 共享线程池
24.6 有界线程池
24.7 并行集合
24.8 使用条件提交异步任务
24.9 双信号量实现
24.10 小结
第25章 Future与Promise
25.1 函数任务
25.2 Future作为同步器
25.3 超时、故障和取消
25.4 Future变体
25.5 Promise
25.6 示例:线程安全缓存
25.7 小结
第26章 函数并发编程
26.1 阻塞的正确性和性能问题
26.2 回调
26.3 Future的高阶函数
26.4 Future的flatMap函数
26.5 示例:重新访问并行服务器
26.6 函数并发编程模式
26.7 小结
第27章 最小化线程阻塞
27.1 原子操作
27.2 无锁数据结构
27.3 fork/join池
27.4 异步编程
27.5 actor
27.6 反应流
27.7 非阻塞同步
27.8 小结
第28章 案例研究:并行策略
28.1 问题定义
28.2 带超时的顺序实现
28.3 使用invokeAny的并行实现
28.4 使用CompletionService的并行实现
28.5 Scala Future的异步实现
28.6 带有CompletableFuture的异步实现
28.7 缓存策略的结果
28.8 小结
附录和词汇表通过扫描封底二维码获取
附录 Java和Kotlin的特性
词汇表
同类热销排行榜
- C语言与程序设计教程(高等学校计算机类十二五规划教材)16
- 电机与拖动基础(教育部高等学校自动化专业教学指导分委员会规划工程应用型自动化专业系列教材)13.48
- 传感器与检测技术(第2版高职高专电子信息类系列教材)13.6
- ASP.NET项目开发实战(高职高专计算机项目任务驱动模式教材)15.2
- Access数据库实用教程(第2版十二五职业教育国家规划教材)14.72
- 信号与系统(第3版下普通高等教育九五国家级重点教材)15.08
- 电气控制与PLC(普通高等教育十二五电气信息类规划教材)17.2
- 数字电子技术基础(第2版)17.36
- VB程序设计及应用(第3版十二五职业教育国家规划教材)14.32
- Java Web从入门到精通(附光盘)/软件开发视频大讲堂27.92
推荐书目
-
孩子你慢慢来/人生三书 华人世界率性犀利的一枝笔,龙应台独家授权《孩子你慢慢来》20周年经典新版。她的《...
-
时间简史(插图版) 相对论、黑洞、弯曲空间……这些词给我们的感觉是艰深、晦涩、难以理解而且与我们的...
-
本质(精) 改革开放40年,恰如一部四部曲的年代大戏。技术突变、产品迭代、产业升级、资本对接...