| 
 新書推薦:
 
  《 
			木石交响:日本古都与欧陆遗产的千年对话
			》
 售價:HK$ 
			407
 
  《 
			中小学生数学学习能力自我评估问题研究
			》
 售價:HK$ 
			408
 
  《 
			蝉鸣震耳欲聋
			》
 售價:HK$ 
			352
 
  《 
			刘心武谈《三言》(冯梦龙文学经典“三言”原著的替代性通俗读本)
			》
 售價:HK$ 
			347
 
  《 
			边际利润
			》
 售價:HK$ 
			352
 
  《 
			红帆船
			》
 售價:HK$ 
			290
 
  《 
			无用知识的有用性(科学的进步,在于人类不断探寻“山的另一侧”的风景)
			》
 售價:HK$ 
			194
 
  《 
			量价狙击:精准捕捉股市机会(新时代·投资新趋势)
			》
 售價:HK$ 
			403
 
 
 | 
         
          | 編輯推薦: |   
          | 本书在读者已经具备一定Haskell使用经验的基础上,展示了如何使用该语言提供的多种API和框架编写并行和并发程序。读者将学到如何通过并行编程利用多核处理器来加速计算密集型的程序,以及如何通过并发编程使用线程编写多交互程序。 作者通过大量可以运行、试验以及扩展的代码示例来引领读者完成本书的阅读。本书将并行Haskell和并发Haskell分成单独的两部分讲解,书中还包括一些练习,用于帮助熟悉以下概念。
 ●在Haskell中通过Eval monad和求值策略表达并行性
 ●通过Par monad并行化普通的Haskell代码
 ●使用Repa库构建基于数组的并行计算
 ●使用Accelerate库直接在GPU上运行计算
 ●使用一些基本的接口编写并发代码
 ●为更大、更复杂的程序构建线程树
 ●学习如何构建高速并发网络服务程序
 ●编写在网络中的多台机器上运行的分布式程序
 |  
         
          | 內容簡介: |   
          | 《Haskell并行与并发编程》深入浅出地介绍如何使用Haskell语言及相关的库和框架编写并行和并发程序。《Haskell并行与并发编程》用两个部分分别讲解并行Haskell编程和并发Haskell编程。根据编程模型的不同,并行部分介绍了3种并行编程方式:基于惰性求值的并行Eval Monad及求值策略、基于数据流的并行Par Monad以及面向大规模数组算法的并行Repa数据并行编程和Acellerate GPU编程。并发部分则按抽象层次由低到高分别涉及线程和MVar、重叠IO、线程的取消和超时、软件事务内存、高级并发抽象、并发网络服务程序、使用线程并行编程和分布式编程等,最后还介绍调试、性能调优以及外部函数接口。书中包含大量可运行的代码示例,并附有详细的注释,读者通过亲身运行、修改和调试代码,可极大地加深对书中内容的理解。 《Haskell并行与并发编程》适合有一定Haskell语言基础的程序员或者对并行或并发编程感兴趣的相关人员阅读。
 |  
         
          | 關於作者: |   
          | Simon Marlow 是Facebook的软件工程师,Haskell社区的领军人物。他主持了Haskell 2010委员会并担任Haskell语言2010报告的编辑。Simon还是广泛使用的Glasgow Haskell编译器(GHC)的主要开发者之一。 |  
         
          | 目錄: |   
          | 目 录 
 第1章 绪论 1
 1.1 术语:并行性和并发性 1
 1.2 工具和资源 3
 1.3 示例代码 3
 第一部分 并行Haskell
 第2章 并行基础:Eval Monad 9
 2.1 惰性求值和弱首范式 9
 2.2 Eval monad、rpar和rseq 15
 2.3 示例:并行化数独解算器 18
 2.4 Deepseq 27
 第3章 求值策略 29
 3.1 参数化策略 30
 3.2 列表并行求值策略 32
 3.3 示例:K均值问题 33
 3.3.1 并行化K均值问题求解 37
 3.3.2 性能和分析 39
 3.3.3 spark活动可视化 42
 3.3.4 粒度 43
 3.4 spark垃圾回收与投机并行 44
 3.5 使用parBuffer并行化惰性流 47
 3.6 分块策略 50
 3.7 恒等性 51
 第4章 数据流并行:Par Monad 52
 4.1 示例:图中的最短路径 56
 4.2 流水线并行 59
 4.2.1 生产者限速 63
 4.2.2 流水线并行的局限性 63
 4.3 示例:会议时间表 64
 4.4 示例:并行类型推断器 71
 4.5 使用不同的调度器 75
 4.6 Par monad和策略的对比 76
 第5章 Repa数据并行编程 77
 5.1 数组、形状和索引 78
 5.2 数组运算 80
 5.3 示例:计算最短路径 82
 5.4 折叠和形状多态 86
 5.5 示例:图像旋转 88
 5.6 小结 92
 第6章 Acellerate GPU编程 94
 6.1 概述 95
 6.2 数组和索引 95
 6.3 运行简单Accelerate计算 97
 6.4 标量数组 99
 6.5 数组索引 99
 6.6 在Acc中创建数组 99
 6.7 数组配对 101
 6.8 常数 102
 6.9 示例:最短路径 102
 6.9.1 在GPU上运行 105
 6.9.2 调试CUDA后端 106
 6.10 示例:Mandelbrot集生成器 106
 第二部分 并发Haskell
 第7章 并发基础:线程和MVar 115
 7.1 简单的示例:提醒器 116
 7.2 通信:MVar 118
 7.3 MVar用作简单通道:日志服务 120
 7.4 MVar用作共享状态的容器 122
 7.5 MVar用作构件单元:无界通道 125
 7.6 公正性 129
 第8章 重叠IO 131
 8.1 Haskell中的异常 134
 8.2 Async的错误处理 138
 8.3 合并 140
 第9章 线程的取消和超时 143
 9.1 异步异常 144
 9.2 异步异常的屏蔽 146
 9.3 bracket操作 149
 9.4 通道的异步异常安全 149
 9.5 超时 151
 9.6 异步异常的捕获 153
 9.7 mask和forkIO 155
 9.8 关于异步异常的讨论 156
 第10章 软件事务内存 158
 10.1 运行示例:窗口管理 158
 10.2 阻塞 162
 10.3 阻塞直到发生变化 164
 10.4 STM的合并 165
 10.5 Async的重实现 166
 10.6 通道的STM实现 168
 10.6.1 更多可能的操作 169
 10.6.2 阻塞操作的复合 170
 10.6.3 异步异常安全 170
 10.7 通道的另一种实现 171
 10.8 有界通道 173
 10.9 STM的适用性 175
 10.10 性能 176
 10.11 小结 178
 第11章 高级并发抽象 179
 11.1 线程泄漏的避免 179
 11.2 对称并发组合子 181
 11.3 添加函子实例 184
 11.4 小结:Async API 185
 第12章 并发网络服务程序 186
 12.1 简易服务器 186
 12.2 包含状态的简易服务器 189
 12.2.1 设计一:单一全局锁 190
 12.2.2 设计二:每条服务线程一个通道 190
 12.2.3 设计三:使用广播通道 191
 12.2.4 设计四:使用STM 192
 12.2.5 实现 193
 12.3 聊天服务器 195
 12.3.1 架构 196
 12.3.2 客户数据 197
 12.3.3 服务器数据 198
 12.3.4 服务器 199
 12.3.5 设置新客户 199
 12.3.6 运行客户处理 201
 12.3.7 小结 203
 第13章 使用线程并行编程 204
 13.1 如何通过并发实现并行 204
 13.2 示例:文件搜索 205
 13.2.1 串行版本 205
 13.2.2 并行版本 207
 13.2.3 性能和伸缩性 208
 13.2.4 使用信号量限制线程数量 210
 13.2.5 ParIO monad 215
 第14章 分布式编程 218
 14.1 distributed-process及相关软件包 219
 14.2 分布式是并发还是并行? 220
 14.3 第一个示例:ping 220
 14.3.1 进程和Process Monad 221
 14.3.2 定义消息类型 221
 14.3.3 Ping服务进程 222
 14.3.4 主进程 224
 14.3.5 main函数 225
 14.3.6 Ping示例小结 225
 14.4 多节点ping 226
 14.4.1 单机运行多节点 227
 14.4.2 多机运行 227
 14.5 有类型通道 229
 14.6 故障处理 233
 14.7 分布式聊天服务器 236
 14.7.1 数据类型 237
 14.7.2 发送消息 239
 14.7.3 广播 240
 14.7.4 分布式处理 240
 14.7.5 测试服务器 243
 14.7.6 故障以及增删节点 243
 14.8 练习:分布式键值存储 245
 第15章 调试、性能调整以及外部函数接口 247
 15.1 并发程序调试 247
 15.1.1 查看线程状态 247
 15.1.2 记录事件日志和ThreadScope 248
 15.1.3 死锁检测 250
 15.2 并发和并行程序的调优 252
 15.2.1 创建线程和Mvar操作 252
 15.2.2 共享并发数据结构 255
 15.2.3 RTS选项的调整 255
 15.3 并发和外部函数接口 257
 15.3.1 线程和外部对外调用 257
 15.3.2 异步异常和外部调用 259
 15.3.3 线程和外部对内调用 259
 |    |