4.23文创礼盒,买2个减5元
欢迎光临中图网 请 | 注册
> >
软件灵活性设计:如何避免陷入编程困境

软件灵活性设计:如何避免陷入编程困境

出版社:机械工业出版社出版时间:2024-03-01
开本: 16开 页数: 306
中 图 价:¥79.2(8.0折) 定价  ¥99.0 登录后可看到会员价
加入购物车 收藏
运费6元,满69元免运费
?快递不能达地区使用邮政小包,运费14元起
云南、广西、海南、新疆、青海、西藏六省,部分地区快递不可达
本类五星书更多>

软件灵活性设计:如何避免陷入编程困境 版权信息

软件灵活性设计:如何避免陷入编程困境 本书特色

本书是关于程序组织策略灵活性的大师之作,是《计算机程序的构造和解释》的“高级续篇”。本书源于麻省理工学院的课程讲义,结合两位作者多年的编程经验,描述了用于构建人工智能应用以及编译器等复杂系统的有效技术。这些技术将帮助程序员灵活地建立系统,了解其中的依赖关系,从而避免陷入编程困境。

软件灵活性设计:如何避免陷入编程困境 内容简介

本书主要介绍如何利用数学符号操作、基于规则的系统和通用程序构建灵活的软件,并利用依赖系统跟踪、解释和控制回溯。第1章通过对编程哲学的介绍提出灵活性的概念。第2章探讨如何用一些普遍适用的方法构建易于扩展的系统。第3章介绍谓词分派的通用程序。第4章介绍符号模式匹配,首先启用术语重写系统,然后通过合一展示类型推理的实现。第5章探讨解释和编译。第6章展示如何构造分层数据和分层程序的系统,并用各种元数据注释其中的数据项。第7章引入传播这一概念来摆脱计算机语言的面向表达式范式。

软件灵活性设计:如何避免陷入编程困境 目录

目 录

译者序推荐序前 言
致 谢
第 1 章  自然和设计中的灵活性 1
1.1 计算体系结构 3
1.2 灵活的智能组件 4
1.3 冗余和简并 7
1.4 探索行为 9
1.5 灵活性的成本 10
第 2 章  领域专用语言 13
2.1 组合器 13
2.1.1 函数组合器 14
2.1.2 组合器和形体构造 24
2.2 正则表达式 25
2.2.1 一种正则表达式组合语言 26
2.2.2 翻译器的实现 26
2.3 包装器 32
2.3.1 定制化包装器 34
2.3.2 实现定制器 35
2.3.3 适配器 36
2.4 抽象领域模型 37
2.4.1 单一化实现 38
2.4.2 领域模型分解 41
2.5 小结 46
第 3 章 算 术 主题 48
3.1 组合算术 48

XIII

3.1.1 一个简单的 ODE 积分器 48
3.1.2 调整算术运算符 50
3.1.3 组合运算 52
3.1.4 算术函数 57
3.1.5 组合器问题 60
3.2 可扩展的通用程序 63
3.2.1 通用运算 65
3.2.2 构建取决于顺序 68
3.2.3 实现通用程序 70
3.3 示例:自动微分 75
3.3.1 自动微分的工作原理 77
3.3.2 n 元函数的导数 81
3.3.3 一些技术细节 82
3.3.4 微分参数的文字函数 90
3.4 高效的通用程序 91
3.4.1 trie 91
3.4.2 缓存 96
3.5 高效的用户自定义类型 97
3.5.1 谓词的类型 97
3.5.2 谓词之间的关系 99
3.5.3 谓词调度关键字 99
3.5.4 示例:冒险游戏 101
3.6 小结 113
第 4 章 模式匹配 115
4.1 模式 115
4.2 项重写 117
4.2.1 代数中的段变量 118
4.2.2 规则系统的实现 120
4.2.3 旁白:魔术宏 122
4.2.4 有向模式调用 123
4.3 匹配器设计 124
4.3.1 编译模式 130
4.3.2 匹配变量限制 132
4.4 合一匹配 135

XIV

4.4.1 合一的工作原理 137
4.4.2 应用:类型推断 143
4.4.3 类型推断的工作原理 144
4.4.4 添加段变量— 一个实验 150
4.5 图上的模式匹配 155
4.5.1 将列表表示为图 155
4.5.2 实现图 156
4.5.3 图上的匹配 158
4.5.4 棋盘和可交换图形视图 160
4.5.5 棋步 164
4.5.6 实现图形匹配 167
4.6 小结 172
第 5 章 评 估 174
5.1 通用 eval/apply 解释器 174
5.1.1 eval 175
5.1.2 apply 182
5.2 具有非严格参数的程序 187
5.3 编译为可执行程序 194
5.4 探索行为 202
5.4.1 amb 203
5.4.2 实现 amb 205
5.5 探索潜在连续 210
5.5.1 作为非本地出口的连续 213
5.5.2 控制权的非本地转移 214
5.5.3 从连续到 amb 216
5.6 能力与责任 223
第 6 章 分 层 225
6.1 使用分层 225
6.2 分层的实现 226
6.2.1 分层数据 227
6.2.2 分层程序 229
6.3 分层算法 232
6.3.1 单位运算 233

XV

6.4 使用依赖项注释值 237
6.4.1 支持层 239
6.4.2 提供正当性 243
6.5 分层的前景 243
第 7 章  传  播 245
7.1 示例:到恒星的距离 246
7.2 传播机制 257
7.2.1 单元 257
7.2.2 传播器 259
7.3 多种不同的世界观 261
7.4 合并值 263
7.4.1 合并基值 263
7.4.2 合并支持值 264
7.4.3 合并值集 265
7.5 搜索可能的世界 266
7.5.1 依赖定向回溯 268
7.5.2 解决组合问题 273
7.6 传播导致简并 277
后  记 279 附录 A  支持软件 281 附录 B  Scheme 编程语言 283 参考文献 297


展开全部

软件灵活性设计:如何避免陷入编程困境 作者简介

克里斯·汉森(Chris Hanson)目前在Datera公司担任技术人员,他曾在麻省理工学院工作多年,是MIT/GNU Scheme系统的主要开发者。他还曾在谷歌工作10年。

杰拉尔德·杰伊·萨斯曼(Gerald Jay Sussman)麻省理工学院松下电气工程教授。自1964年以来,他一直参与麻省理工学院的人工智能研究。他的研究重点是了解科学家和工程师使用的问题解决策略,目标是自动化部分过程并将其形式化,以提供更有效的科学和工程教育方法。他还从事计算机语言、计算机体系结构和VLSI设计方面的工作。他是IEEE终身会士、NAE院士、AAAI会士、ACM会士、 AAAS会士。

商品评论(0条)
暂无评论……
书友推荐
编辑推荐
返回顶部
中图网
在线客服