logo
分类于: 编程语言 计算机基础 职场办公

简介

Clojure编程实战(原书第2版)

Clojure编程实战(原书第2版) 0.0分

资源最后更新于 2020-03-29 04:20:40

作者:〔美〕阿米特·拉索尔〔美〕弗朗西斯·阿维拉

译者:姚军

出版社:出版社机械工业出版社

出版日期:2018-10

ISBN:9787111609384

文件格式: pdf

标签: 计算机 编程 软件开发 工具书 Java

简介· · · · · ·

本书是一本优秀的Clojure入门指南。书中从抽象的理论到实际的案例,对Clojure语言进行了全面、系统的阐释,可以帮助你快速掌握编写大规模Clojure程序所必需的特性、概念和技术。本书共11章,第1章概要介绍Clojure语言及其三大支柱;第2章介绍REPL(读取-求值-打印循环,这是Clojure的命令行解释程序),帮助你开始编写Clojure代码;第3章介绍Clojure更独特的功能,包括元数据、异常处理、高阶函数、两组作用域规则(词法和动态)、组织代码的命名空间等;第4章讨论三种基本的多态性和使用多重方法时各种多态性在Clojure中的表现;第5章介绍Clojure与JVM的结合;第6章解释Clojure的状态管理和并行方法,以及四种基本的并行原语;第7章介绍Clojure的宏系统;第8章深入介绍函数式编程范式,以及高阶函数的利用方法;第9章处理表达问题;第10章说明如何将编写测试驱动代码的过程与Clojure REPL相结合,显著提升效率;第11章介绍高级宏和DSL。阿米特·拉索尔(Amit Rathore),有12年构建大规模、数据密集型应用的开发经验,目前正在为一个高分布式、高负载、实时的大数据系统开发Clojure代码。弗朗西斯·阿维拉(Francis Avila),Breeze的软件开发工程师,有7年Web前端和后端开发经验。

想要: 点击会收藏到你的 我的收藏,可以在这里查看

已收: 表示已经收藏

Tips: 注册一个用户 可以通过用户中心得到电子书更新的通知哦

目录

  1. 译者序
  2. 第1版赞誉
  3. 第2版序言
  4. 第1版序言
  5. 关于本书
  6. 致谢
  7. 第1章 Clojure简介
  8. 1.1 Clojure的概念以及采用的原因
  9. 1.1.1 Clojure:现代化的Lisp语言
  10. 1.1.2 Clojure:务实的函数式编程
  11. 1.1.3 JVM之上的Clojure
  12. 1.2 语言基础知识
  13. 1.2.1 Lisp语法
  14. 1.2.2 括号
  15. 1.3 宿主互操作性:JVM速成教程
  16. 1.3.1 Java类型、类和对象
  17. 1.3.2 点(.)和new运算符
  18. 1.3.3 线程和并发性
  19. 1.4 小结
  20. 第2章 Clojure要素:数据结构和函数
  21. 2.1 在REPL上编码
  22. 2.1.1 Clojure REPL
  23. 2.1.2 “Hello,world!”
  24. 2.1.3 用doc、find-doc和apropos查找文档
  25. 2.1.4 Clojure语法的另外几个要点
  26. 2.2 Clojure数据结构
  27. 2.2.1 nil、真值和假值
  28. 2.2.2 字符和字符串
  29. 2.2.3 Clojure数值
  30. 2.2.4 符号和关键字
  31. 2.2.5 列表
  32. 2.2.6 向量
  33. 2.2.7 映射
  34. 2.2.8 序列
  35. 2.3 程序结构
  36. 2.3.1 函数
  37. 2.3.2 let形式
  38. 2.3.3 do的副作用
  39. 2.3.4 读取器宏
  40. 2.4 程序流程
  41. 2.4.1 条件
  42. 2.4.2 逻辑函数
  43. 2.4.3 函数式循环
  44. 2.4.4 串行宏
  45. 2.5 小结
  46. 第3章 Clojure构件
  47. 3.1 元数据
  48. 3.1.1 Java类型提示
  49. 3.1.2 Java原始类型和数组类型
  50. 3.2 Java异常:try和throw
  51. 3.3 函数
  52. 3.3.1 定义函数
  53. 3.3.2 调用函数
  54. 3.3.3 高阶函数
  55. 3.3.4 编写高阶函数
  56. 3.3.5 匿名函数
  57. 3.3.6 关键字和符号
  58. 3.4 作用域
  59. 3.4.1 变量和绑定
  60. 3.4.2 重温let形式
  61. 3.4.3 词法闭包
  62. 3.5 命名空间
  63. 3.5.1 ns宏
  64. 3.5.2 使用命名空间
  65. 3.6 解构
  66. 3.6.1 向量绑定
  67. 3.6.2 映射绑定
  68. 3.7 读取器字面量
  69. 3.8 小结
  70. 第4章 多重方法多态
  71. 4.1 多态及其类型
  72. 4.1.1 参数化多态
  73. 4.1.2 随意多态
  74. 4.1.3 子类多态
  75. 4.2 用多重方法实现多态
  76. 4.2.1 不使用多重方法时的情况
  77. 4.2.2 使用多重方法实现随意多态
  78. 4.2.3 多分派
  79. 4.2.4 使用多重方法实现子类多态
  80. 4.3 小结
  81. 第5章 探索Clojure和Java互操作
  82. 5.1 从Clojure中调用Java
  83. 5.1.1 将Java类导入Clojure
  84. 5.1.2 创建实例
  85. 5.1.3 访问方法和域
  86. 5.1.4 宏和句点特殊形式
  87. 5.1.5 有助于使用Java的Clojure宏
  88. 5.1.6 实现接口和扩展类
  89. 5.2 将Clojure代码编译为Java字节码
  90. 5.2.1 示例:两个计算器的故事
  91. 5.2.2 用gen-class和gen-interface创建Java类和接口
  92. 5.3 从Java调用Clojure
  93. 5.4 小结
  94. 第6章 状态和并发的世界
  95. 6.1 状态存在的问题
  96. 6.1.1 共享状态的常见问题
  97. 6.1.2 传统解决方案
  98. 6.2 标识与值的分离
  99. 6.2.1 不可变值
  100. 6.2.2 对象和时间
  101. 6.2.3 不可变性和并发性
  102. 6.3 Clojure的方法
  103. 6.3.1 不可变性与性能
  104. 6.3.2 托管引用
  105. 6.4 引用
  106. 6.4.1 创建引用
  107. 6.4.2 引用突变
  108. 6.4.3 软件事务内存
  109. 6.5 代理
  110. 6.5.1 创建代理
  111. 6.5.2 代理突变
  112. 6.5.3 使用代理
  113. 6.5.4 STM事务中的副作用
  114. 6.6 原子
  115. 6.6.1 创建原子
  116. 6.6.2 原子突变
  117. 6.7 变量
  118. 6.7.1 创建变量和根绑定
  119. 6.7.2 变量绑定
  120. 6.8 状态及其统一访问模型
  121. 6.8.1 创建
  122. 6.8.2 读取
  123. 6.8.3 突变
  124. 6.8.4 事务
  125. 6.8.5 监视突变
  126. 6.9 决定使用哪种托管引用类别
  127. 6.10 future和promise
  128. 6.10.1 future
  129. 6.10.2 promise
  130. 6.11 小结
  131. 第7章 通过宏发展Clojure
  132. 7.1 宏的基础知识
  133. 7.1.1 文本替换
  134. 7.1.2 unless示例
  135. 7.1.3 宏模板
  136. 7.1.4 回顾:为什么使用宏
  137. 7.2 Clojure内部的宏
  138. 7.2.1 comment
  139. 7.2.2 declare
  140. 7.2.3 defonce
  141. 7.2.4 and
  142. 7.2.5 time
  143. 7.3 编写自己的宏
  144. 7.3.1 infix
  145. 7.3.2 randomly
  146. 7.3.3 defwebmethod
  147. 7.3.4 defnn
  148. 7.3.5 assert-true
  149. 7.4 小结
  150. 第8章 函数式编程深入研究
  151. 8.1 使用高阶函数
  152. 8.1.1 收集函数结果
  153. 8.1.2 对一系列事物进行归纳
  154. 8.1.3 过滤一系列事物
  155. 8.2 部分应用
  156. 8.2.1 函数适配
  157. 8.2.2 定义函数
  158. 8.3 闭包
  159. 8.3.1 自由变量与闭包
  160. 8.3.2 延迟计算与闭包
  161. 8.3.3 闭包与对象
  162. 8.3.4 一个Clojure对象系统
  163. 8.4 小结
  164. 第9章 协议、记录和类型
  165. 9.1 表达式问题
  166. 9.1.1 建立示例场景
  167. 9.1.2 对表达式问题的仔细观察和一些潜在的解决方案
  168. 9.1.3 Clojure多重方法解决方案
  169. 9.2 研究表达式问题的运算端
  170. 9.2.1 def-modus-operandi
  171. 9.2.2 detail-modus-operandi
  172. 9.2.3 跟踪你的操作方法
  173. 9.2.4 解决方案的错误处理和故障点
  174. 9.3 用协议研究表达式问题的数据类型方面
  175. 9.3.1 defprotocol与extend-protocol
  176. 9.3.2 用defrecord、deftype和reify定义数据类型
  177. 9.4 小结
  178. 第10章 测试驱动开发及其他
  179. 10.1 TDD入门:操纵字符串中的日期
  180. 10.1.1 第一个断言
  181. 10.1.2 month-from和year-from
  182. 10.1.3 as-string
  183. 10.1.4 递增和递减
  184. 10.1.5 无情地重构
  185. 10.2 通过模拟和打桩改善测试
  186. 10.2.1 示例:费用查找器
  187. 10.2.2 打桩
  188. 10.2.3 模拟
  189. 10.2.4 模拟与桩的对比
  190. 10.2.5 管理打桩和模拟状态
  191. 10.3 组织测试
  192. 10.3.1 testing宏
  193. 10.3.2 are宏
  194. 10.4 小结
  195. 第11章 更多的宏和DSL
  196. 11.1 对宏的快速回顾
  197. 11.2 指代宏
  198. 11.2.1 指代式if
  199. 11.2.2 thread-it宏
  200. 11.3 将计算转移到编译时
  201. 11.3.1 示例:不使用宏的循环加密
  202. 11.3.2 让编译器更努力地工作
  203. 11.4 生成宏的宏
  204. 11.4.1 示例模板
  205. 11.4.2 实现make-synonym
  206. 11.4.3 使用宏生成宏的原因
  207. 11.5 领域特定语言
  208. 11.5.1 DSL驱动设计
  209. 11.5.2 用户分类
  210. 11.6 小结
  211. 附录A 安装Clojure
  212. A.1 Try Clojure
  213. A.2 Clojure.jar
  214. A.3 Leiningen
  215. 结语