下载中心>文集> 程序员修炼之道经典书籍汇总

程序员修炼之道经典书籍汇总

在上一个专题中,我们给大家搜集整理了国外优秀的C语言学习书籍,大家可以根据自己的需要选取其中的学习。如果能够系统的学习其中的一部分,那么相信大家一定能够很好地掌握C语言编程。

那么学会了C语言编程后,接下来就是要学习一些编程经验和编程方法,以使我们的编程水平能够得到大幅度的提高。

在这一个专题中,我们搜集了一些编程修炼方面的书籍,通过这些数据,可以是大家的编程水平打到一个相对高的水平。

下载:356 评论

程序员修炼之道经典书籍汇总 文档列表

pdf
[程序设计实践].(美)柯奈汉.文字版
标签:程序设计
积分:1 下载次数:4资源类型:技术书籍上传者:tiankai001上传时间:2013-10-22
简介:[程序设计实践].(美)柯奈汉.文字版 译者序 前言 第1章 风格 1.1 名字 1.2 表达式和语句 1.3 一致性和习惯用法 1.4 函数宏 1.5 神秘的数 1.6 注释 1.7 为何对此费心 第2章 算法与数据结构 2.1 检索 2.2 排序 2.3 库 2.4 一个Java快速排序 2.5 大O记法 2.6 可增长数组 2.7 表 2.8 树 2.9 散列表 2.10 小结 第3章 设计与实现 3.1 马尔可夫链算法 3.2 数据结构的选择 3.3 在C中构造数据结构 3.4 生成输出 3.5 Java 3.6 C++ 3.7 Awk和Perl 3.8 性能 3.9 经验教训 第4章 界面 4.1 逗号分隔的值 4.2 一个原型库 4.3 为别人用的库 4.4 C++实现 4.5 界面原则 4.6 资源管理 4.7 终止、重试或失败 4.8 用户界面 第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 谁来测试 6.8 测试马尔可夫程序 6.9 小结 第7章 性能 7.1 瓶颈 7.2 计时和轮廓 7.3 加速策略 7.4 代码调整 7.5 空间效率 7.6 估计 7.7 小结 第8章 可移植性 8.1 语言 8.2 头文件和库 8.3 程序组织 8.4 隔离 8.5 数据交换 8.6 字节序 8.7 可移植性和升级 8.8 国际化 8.9 小结 第9章 记法 9.1 数据格式 9.2 正则表达式 9.3 可编程工具 9.4 解释器、编译器和虚拟机 9.5 写程序的程序 9.6 用宏生成代码 9.7 运行中编译 后记 附录:规则汇编 索引
pdf
《代码整洁之道》扫描中文版
标签:代码整洁之道编程规范代码优化
积分:1 下载次数:47资源类型:技术书籍上传者:jujuyaya222上传时间:2013-09-17
简介:《代码整洁之道》扫描中文版 [美]Robert C.Martin 著 韩磊 译 人民邮电出版社 出版 简介:软件质量,不但依赖于架构及项目管理,而且与代码质量紧密相关。这一点,无论是敏捷开发流派还是传统开发流派,都不得不承认。 本书提出一种观念:代码质量与其整洁度成正比,干净的代码,即在质量上较为可靠,也为后期维护,升级奠定了良好基础。作为编程领域的佼佼者,本书作者给出了一系列行之有效的正解代码操作实践。这些时间在本书中体现为一条条规则。并辅以来自显示项目,u的正反两面的范例。只要遵循这些规则,就能编写出干净的代码。从而有效的提升代码质量。 本书阅读对象为一切有志于改善代码质量的程序员及技术精力。书中介绍的规则均来自作者多年的时间经验,涵盖从命名到重构的多个编程方面,虽为一家之主演,然盛有可资借鉴的价值。
pdf
[高质量程序设计指南.C.C语言(第三版)].林锐.扫描版
标签:高质量程序设计指南林锐
积分:1 下载次数:9资源类型:技术书籍上传者:tiankai001上传时间:2013-10-22
简介:[高质量程序设计指南.C.C语言(第三版)].林锐.扫描版 高质量程序设计是软件行业的薄弱环节,大部分企业为此付出了高昂的代价,只能通过大量的测试和改错来提高软件产品的质量。因此,如何让程序员熟练地掌握编程技术和编程规范,在开发过程中内建高质量代码,是IT企业面临的主要挑战之一。 《高质量程序设计指南:C++/C语言(第3版)》以轻松幽默的笔调向读者论述了高质量软件开发方法与C++/C编程规范,而这也是作者多年从事软件开发工作的经验总结。全书共17章,第1章到第4章重点介绍软件质量和基本的程序设计方法;第5章到第16章重点阐述C++/C编程风格、面向对象程序设计方法和一些技术专题;第17章阐述STL的原理和使用方法。 本书第1版和第2版部分章节曾经在网上广泛流传,被国内IT企业的不少软件开发人员采用。本书的附录C《大学十年》是作者在网上发表的一个短篇传记,文中所描述的充满激情的学习和生活态度,感染了大批莘莘学子。 《高质量程序设计指南:C++/C语言(第3版)》的主要读者对象是IT企业的程序员和项目经理,以及大专院校的本科生和研究生。 作者简介 林锐,1973年生。1994年和1996年获西安电子科技大学应用物理学士学位和微电子硕士学位,2000年获浙江大学计算机应用博士学位。大学期间两度被评为中国百名跨世纪优秀大学生,1996年获电子工业部科技进步二等奖,1997年获首届中国大学生电脑大赛软件一等奖。2000年7月加入上海贝尔有限公司,从事软件工程、项目管理和CMM的研究推广工作,2003年7月当选为 Alcatel 集团技术专家(Alcatel 集团授予为保持全球技术领先地位做出突出贡献的技术专家荣誉和资格)。2004年初创建上海漫索计算机科技有限公司,致力于创作适合国内软件企业需求的管理方法论和软件产品。从2000年至今,林锐博士在程序设计、用户界面设计、软件工程、项目管理、CMMI与软件过程改进、IT企业研发管理、软件企业管理等领域累计出版著作十部,拥有数十万名读者,成为国内软件企业管理方法论的领先者。 韩永泉,1975年生。1994年至2001年就读于西安电子科技大学计算机系,获硕士学位。2001年4月加入上海大唐移动通信技术有限公司,担任高级软件工程师,从事电信设备网管软件的研发工作。2004年加入北京新岸线软件科技有限公司,从事数字电视和手机电视相关软件产品的设计、开发和研发管理工作,曾负责所在公司与上海漫索计算机科技有限公司合作开展的软件过程改进和研发管理解决方案的实施项目。2010年加入诺基亚西门子(NSN)。面向对象和面向组件软件开发技术及编程技术的爱好者。
pdf
编程高手箴言
标签:编程高手箴言
积分:1 下载次数:34资源类型:技术书籍上传者:tiankai001上传时间:2013-10-22
简介:编辑推荐 有人说,“编程是一种艺术”,这句话的意思一方面是说,编程技巧像艺术技巧一样,深不可测、奥妙无穷;另一方面是说,程序员像艺术家一样,也有发挥创造性的无限空间。 本书作者梁肇新是国内为数不多具有十多年编程经验,而依然战斗在软件开发第一线,且依然对其热情执著的编程高手之一。梁肇新将自己厚积薄发的编程经验集结成书,相信对广大程序员大有裨益。本书通篇没有时髦的IT新名词或新思想,而是踏踏实实地对很多知识进行了深刻的剖析,这有助于为编程打下坚实的根基。只有这样,才能在飞速变化的软件领域免于雾里看花,才能更快更深地认识许多新问题、新知识,也才能更从容地应对未来之挑战。 内容推荐 《编程高手箴言》这本书就是梁肇新自己十余年来编程经验的集结。在名人出书成为热潮的这几年中,拥有丰富经历和感悟的梁肇新却没有跟风,这本《箴言》是他的第一本著作,可谓厚积薄发。全书通篇没有时髦的IT新名词或新思想,而是踏踏实实地对很多知识进行了深刻的剖析,这有助于为编程打下坚实的根基。只有这样,才能使开发者在飞速变化的软件领域里免于雾里看花,才能更快更深地认识许多新问题、新知识,也才能更从容地应对未来之挑战。相信这本书对广大程序员大有裨益,无论是从技术角度还是从职业生涯指导角度。 作者简介 梁肇新,1970年生于广西省玉林市,1989年就读广西大学;1993年大学毕业后进入珠海巨人公司从事软件开发工作,深入研究了Windows内核,开发出汉字平台系统;1995年7月离开巨人公司,独立创业;1997年独立开发出使其一举成名的《超级解霸3.0》,独创“Direct-CD ROM”技 目录 第1章 程序点滴 1 1.1 程序≠软件 1 1.1.1 商业软件门槛的形成 2 1.1.2 认清自己的发展 4 1.2 高手是怎样练成的 5 1.2.1 高手成长的六个阶段 5 1.2.2 初级程序员和高级程序员的区别 7 1.2.3 程序员是吃青春饭的吗 9 1.3 正确的入门方法 11 1.3.1 规范的格式是入门的基础 13 1.3.2 调试的重要性 17 1.4 开放性思维 18 1.4.1 动态库的重要性 19 1.4.2 程序设计流程 20 1.4.3 保证程序可预测性 21 第2章 认识CPU 23 2.1 8位微处理器回顾 23 2.2 16位微处理器 24 2.2.1 组成结构 24 2.2.2 8086寄存器组成 25 2.2.3 内存的寻址 26 2.2.4 中断处理 27 2.3 32位微处理器 29 2.3.1 寄存器组成 29 2.3.2 保护模式 32 2.3.3 80386的寻址方式 32 2.4 【实例】:在DOS实模式下读取4GB内存代码分析 36 2.4.1 程序的意义 37 2.4.2 程序代码 37 2.4.3 程序原理 41 2.4.4 程序中的一些解释 42 第3章 Windows运行机理 44 3.1 内核分析 44 3.1.1 运行机理 44 3.1.2 LE文件的格式 53 3.1.3 VxD的设计实现 59 3.1.4 【实例】:CPU降温程序代码分析 65 3.2 消息的运行方式 82 3.2.1 认识消息 82 3.2.2 Windows系统中消息的运作方式 84 3.2.3 消息处理过程实例 87 3.3 GDI的结构和组成 89 3.3.1 GDI的组成 89 3.3.2 GDI和DirectDraw的关系 91 3.4 线程的机制 93 3.4.1 线程的工作方式 93 3.4.2 线程与GDI的冲突:死机的主要原因 94 3.4.3 线程的内存泄漏的主要原因 96 3.4.4 进程管理 98 3.4.5 同步机制 100 3.5 PE结构分析 103 3.5.1 PE头标 103 3.5.2 表节 113 3.5.3 PE文件引入 119 3.5.4 PE文件引出 125 3.5.5 PE文件资源 129 第4章 编程语言的运行机理 133 4.1 汇编的原理 133 4.1.1 指令系统 133 4.1.2 汇编与Win API的接口方法 141 4.1.3 【实例】:自定义程序的入口点 145 4.2 高级语言的原理 151 4.2.1 C/C++的原理 151 4.2.2 解释语言的原理 165 4.2.3 【实例】:用C实现简单的BASIC语言环境 165 4.3 C、C++的学习方式 187 4.3.1 从BASIC到C 187 4.3.2 C、汇编、API的关系 187 4.3.3 接口的建立方法 190 4.4 挂钩技术 201 4.4.1 Windows上C的挂钩 201 4.4.2 C++的挂钩技术 213 第5章 代码的规范和风格 220 5.1 环境的设置 220 5.1.1 集成环境的设置 220 5.1.2 TAB值的设置 221 5.1.3 编译环境的设置 222 5.1.4 设置herosoft.dsm宏 224 5.2 变量定义的规范 227 5.2.1 变量的命名规则 227 5.2.2 变量定义的地方规定 228 5.2.3 变量的对齐规定 229 5.3 代码对齐方式、分块、换行的规范 230 5.4 快速的代码整理方法 232 5.5 注释的规范 233 5.6 头文件的规范 236 5.7 建议采用的一些规则 236 5.8 可灵活运用的一些规则 238 5.9 标准化代码示例 239 5.10 成对编码规则 243 5.10.1 成对编码的实现方法 243 5.10.2 成对编码中的几点问题 248 5.11 正确的成对编码的工程编程方法 251 5.11.1 编码前的工作 252 5.11.2 成对编码的工程方法 255 5.11.3 两个问题的解释 260 第6章 分析方法 266 6.1 分析概要 266 6.1.1 分析案例一:软件硬盘阵列 268 6.1.2 分析案例之二:游戏内存修改工具 274 6.2 接口的提炼 286 6.2.1 分离接口 286 6.2.2 参数分析 287 6.3 主干和分支 290 6.3.1 主干和分支分析举例 291 6.3.2 程序检验 300 6.4 是否对象化 301 6.5 是否DLL化 307 6.5.1 DLL的建立和调用 307 6.5.2 DLL动态与静态加载的比较 322 6.5.3 DLL中函数的定义 322 6.6 COM的结构 324 6.7 几种软件系统的体系结构分析 326 6.7.1 播放器的解码组成分析 326 6.7.2 豪杰大眼睛的体系结构 330 6.7.3 Windows 9x体系结构 331 第7章 调试方法 333 7.1 调试要点 333 7.1.1 调试和编程同步 333 7.1.2 汇编代码确认 334 7.1.3 Win32的Debug实现方法 342 7.2 基本调试实例分析 343 7.3 多线程应用的调试 350 7.4 非固定错误的调试 352 7.4.1 激活调试环境 352 7.4.2 正确区分错误的类型 356 7.4.3 常见的偶然错误 357 第8章 内核优化 358 8.1 数据类型的认识 358 8.2 X86优化编码准则 359 8.2.1 通用的X86优化技术 359 8.2.2 通用的AMD-K6处理器x86代码优化 361 8.2.3 AMD-K6处理器整数x86代码优化 364 8.3 MMX指令的优化 368 8.3.1 MMX的寄存器介绍 368 8.3.2 MMX的工作原理 368 8.3.3 MMX的检测 369 8.3.4 MMX指令的介绍 370 8.4 MMX的实例一:图像的淡入淡出 394 8.4.1 目的 394 8.4.2 解决方法 394 8.4.3 分析 394 8.4.4 初步实现 395 8.4.5 MMX的优化实现 401 8.5 MMX的实例二:MMX类的实现方法 407 8.5.1 实现方法分析 407 8.5.2 实现步骤 407 8.5.3 检测过程 410 8.5.4 总结 416
pdf
编程匠艺-完整版
标签:编程匠艺
积分:1 下载次数:97资源类型:技术书籍上传者:tiankai001上传时间:2013-10-22
简介:编辑推荐 《编程匠艺:编写卓越的代码》的优点,一是比较完整,二是具体而又简明,三是朴实。 本书中随处可见与编程语言无关、但是与所有开发人员都相关的建议,其内容遍及编程的各个要素,如代码风格、变量命名、错误处理和安全性等。不仅如此,它还触及了一些更广泛的现实世界编程问题,如有效的团队合作、开发过程和文档编写,等等。本书各章末尾均有一个问题和答案部分,这些部分回顾了各章中的一些关键概念,促使你像专家一样思考,从而使本书成为那些渴望作为团队的一分子、专业并高效地编程的新手们的一本绝佳的参考书。本书将告诉你如何:在现实世界困难重重的情况下编写出优秀的代码;避免在工作场所出现灾难和军心涣散的情况;准确地评估你的能力,并找到提高的途径;采取有建设性的态度,并遵从最佳的做法。 内容简介 如果你可以编写出合格的代码,但是想更进一步、创作出组织良好而且易于理解的代码,并希望成为一名真正的编程专家或提高现有的职业技能,那么本书都会为你给出答案。《编程匠艺:编写卓越的代码》的内容涵盖编程的各个要素,如代码风格、变量命名、错误处理和安全性等。此外,本书还对一些更广泛的编程问题进行了探讨,如有效的团队合作、开发过程和文档编写,等等。《编程匠艺:编写卓越的代码》各章的末尾均提供一些思考问题,这些问题回顾了各章中的一些关键概念,可以促使你像专家一样思考,从而使本书成为那些渴望作为团队的一分子,职业并高效地编程的新手们的一本绝佳的参考书。 目录 第1篇 代码表面第一部分 第1章 善于防守:健壮代码的防御性编程技巧 1.1 向优秀的代码前进 1.2 设想:最坏的选择 1.3 什么是防御性编程? 1.4 又大又坏的世界 1.5 防御性编程技巧 1.5.1 使用好的编码风格和合理的设计 1.5.2 不要仓促地编写代码 1.5.3 不要相信任何人 1.5.4 编码的目标是清晰,而不是简洁 1.5.5 不要让任何人做他们不该做的修补工作 1.5.6 编译时打开所有警告开关 1.5.7 使用静态分析工具 1.5.8 使用安全的数据结构 1.5.9 检查所有的返回值 1.5.10 审慎地处理内存(和其他宝贵的资源) 1.5.11 在声明位置初始化所有变量 1.5.12 尽可能推迟一些声明变量 1.5.13 使用标准语言工具 1.5.14 使用好的诊断信息日志工具 1.5.15 审慎地进行强制转换 1.5.16 细则 1.6 约束 1.6.1 约束的内容 1.6.2 移除约束 1.7 总结 1.8 另请参见 1.9 思考 1.9.1 深入思考 1.9.2 结合自己 第2章 精心布局:源代码的版面和样式 2.1 什么是关键 2.2 了解你的读者 2.3 什么是好的样式 2.4 使用括号 2.4.1 K&R括号风格 2.4.2 悬挂式的括号风格 2.4.3 缩进的括号风格 2.4.4 其他的括号风格 2.5 主宰一切的风格 2.6 内部风格(以及在哪里使用它们) 2.7 设立标准 2.8 正义的战争 2.9 总结 2.10 另请参见 2.11 思考 2.11.1 深入思考 2.11.2 结合自己 第3章 名正言顺:为有意义的事物起有意义的名称 3.1 为什么我们应该恰当地命名呢 3.2 我们对什么进行命名 3.3 名字游戏 3.3.1 描述性 3.3.2 技术上正确 3.3.3 符合语言习惯 3.3.4 恰当 3.4 具体细节 3.4.1 命名变量 3.4.2 命名函数 3.4.3 命名类型 3.4.4 命名名字空间 3.4.5 命名宏 3.4.6 命名文件 3.5 玫瑰不叫玫瑰 3.5.1 保持前后一致 3.5.2 利用上下文 3.5.3 使用对你有利的名称 3.6 总结 3.7 另请参见 3.8 思考 3.8.1 深入思考 3.8.2 结合自己 第4章 不言自明:编写“自文档化”代码的技巧 4.1 自文档化的代码 4.2 编写自文档化代码的技术 4.2.1 使用好的样式编写简单的代码 4.2.2 选择有意义的名称 4.2.3 分解为原子函数 4.2.4 选择描述性的类型 4.2.5 命名常量 4.2.6 强调重要的代码 4.2.7 分组相关信息 4.2.8 提供文件头 4.2.9 恰当地处理错误 4.2.10 编写有意义的注释 4.3 实用的自文档化方法 4.3.1 文学性编程 4.3.2 文档化工具 4.4 总结 4.5 另请参见 4.6 思考 4.6.1 深入思考 4.6.2 结合自己 第5章 随篇注释:如何编写代码注释 5.1 什么是代码注释 5.2 注释看上去是什么样的 5.3 多少注释是恰当的 5.4 注释中应该有些什么 5.4.1 解释为什么,而不是怎么样 5.4.2 不要描述代码 5.4.3 不要取代代码 5.4.4 确保注释有用 5.4.5 避免分心 5.5 实践 5.6 从审美的角度看注释 5.6.1 一致性 5.6.2 清晰的块注释 5.6.3 缩进的注释 5.6.4 行尾注释 5.6.5 帮助你阅读代码 5.6.6 选择一种维护成本较低的风格 5.6.7 分隔板 5.6.8 标志 5.6.9 文件头注释 5.7 使用注释 5.7.1 帮助你编写例行程序 5.7.2 错误修正通告 5.7.3 注释过时 5.7.4 维护和空洞无物的注释 5.8 总结 5.9 另请参见 5.10 思考 5.10.1 深入思考 5.10.2 结合自己 第6章 人非圣贤:处理不可避免的情况——代码中的错误情形 6.1 从何而来 6.2 错误报告机制 6.2.1 不报告 6.2.2 返回值 6.2.3 错误状态变量 6.2.4 异常 6.2.5 信号 6.3 检测错误 6.4 处理错误 6.4.1 何时处理错误 6.4.2 可能的反应 6.4.3 代码示例 6.5 使地狱浮现 6.6 管理错误 6.7 总结 6.8 另请参见 6.9 思考 6.9.1 深入思考 6.9.2 结合自己 第2篇 代码的神秘生命 第7章 欲善其事,先利其器:使用工具构建软件 7.1 什么是软件工具 7.2 为什么要在意工具 7.3 使工具发挥作用 7.3.1 了解它能做些什么 7.3.2 学习如何驾驭它 7.3.3 了解它适合什么任务 7.3.4 检查它是否可用 7.3.5 找到了解更多信息的途径 7.3.6 查明新版本何时出现 7.4 哪个工具 7.4.1 源代码编辑工具 7.4.2 代码构建工具 7.4.3 调试和调查工具 7.4.4 语言支持工具 7.4.5 其他工具 7.5 总结 7.6 另请参见 7.7 思考 7.7.1 深入思考 7.7.2 结合自己 第8章 测试时代:测试代码的魔术 8.1 反思现实 8.2 谁、是什么、何时以及为什么 8.2.1 我们为什么要测试 8.2.2 谁来进行测试 8.2.3 测试的内容有些什么 8.2.4 何时进行测试 8.3 测试并不难…… 8.4 测试的类型 8.5 选择单元测试用例 8.6 为测试而设计 8.7 看!不要用手 8.8 面对故障该怎么办 8.9 你能管理它吗 8.9.1 缺陷跟踪系统 8.9.2 bug审查 8.10 总结 8.11 另请参见 8.12 思考 8.12.1 深入思考 8.12.2 结合自己 第9章 寻找缺陷(调试):当事情进展得不顺利时该怎么办 9.1 生活的真相 9.2 bug的种类 9.2.1 从远处看 9.2.2 从近处看 9.2.3 从更近处看 9.3 消灭害虫 9.3.1 地下之路 9.3.2 地上之路 9.4 搜寻bug 9.4.1 编译时错误 9.4.2 运行时错误 9.5 如何修正缺陷 9.6 预防 9.7 除蜂剂、驱虫剂、捕蝇纸 9.7.1 调试器 9.7.2 内存访问校验器 9.7.3 系统调用跟踪 9.7.4 内核转储 9.7.5 日志 9.8 总结 9.9 另请参见 9.10 思考 9.10.1 深入思考 9.10.2 结合自己 第10章 代码构建:将源代码转换为可执行代码的过程 10.1 语言障碍 10.1.1 解释型语言 10.1.2 编译型语言 10.1.3 字节编译型语言 10.2 小题大做 10.3 构建软件版本 10.4 怎样才算是一个优秀的构建系统 10.4.1 简洁 10.4.2 一致 10.4.3 可重复和可靠 10.4.4 原子性 10.4.5 能够应付错误 10.5 技术细节 10.5.1 目标的选择 10.5.2 内务处理 10.5.3 依赖关系 10.5.4 自动构建 10.5.5 构建配置 10.5.6 递归地使用make 10.6 请发布我吧 10.7 构建大师是全能的吗 10.8 总结 10.9 另请参见 10.10 思考 10.10.1 深入思考 10.10.2 结合自己 第11章 追求速度:优化程序和编写高效的代码 11.1 优化是什么 11.2 是什么使代码不尽如人意 11.3 为什么不进行优化呢 11.4 为什么要进行优化 11.5 优化的具体细节 11.5.1 证明你需要进行优化 11.5.2 找出运行得最慢的代码 11.5.3 测试代码 11.5.4 优化代码 11.5.5 优化之后 11.6 优化的技术 11.6.1 设计更改 11.6.2 代码更改 11.7 编写高效的代码 11.8 总结 11.9 另请参见 11.10 思考 11.10.1 深入思考 11.10.2 结合自己 第12章 不安全感综合征:编写安全的程序 12.1 危险 12.2 敌人 12.3 借口,都是借口 12.4 感到很脆弱 12.4.1 不安全的设计和体系结构 12.4.2 缓冲溢出 12.4.3 嵌入的查询字符串 12.4.4 竞争状况 12.4.5 整数溢出 12.5 防范措施 12.5.1 系统安装技术 12.5.2 软件设计技术 12.5.3 代码实现技术 12.5.4 规程技术 12.6 总结 12.7 另请参见 12.8 思考 12.8.1 深入思考 12.8.2 结合自己 第3篇 代码的形成过程
pdf
《编程珠玑(第2版)》完整中文版
标签:编程珠玑C语言
积分:1 下载次数:20资源类型:技术书籍上传者:tiankai001上传时间:2013-10-22
简介:《编程珠玑(第2版)》 [美]Jon Bentley 著 黄倩 钱丽艳 译 刘田 审校 人民邮电出版社 出版 简介:多年以来,当程序员们推选出最心爱的计算机图书时,《编程珠玑》总是位于前列。正如自然界里珍珠出自细沙对牡蛎的磨砺。计算机科学大师Jon Bentley以其独有的洞察力和创造力,从磨砺程序员的实际问题中凝结出一篇篇不朽的编程“珠玑”,成为世界计算机界名刊《ACM通讯》历史上最受欢迎的专栏,最终结集为两部不朽的计算机科学经典名著,影响和激励着一代又一代程序员和计算机科学工作者。本书为第一卷,主要讨论计算机科学中最本质的问题:如何正确选择和高效地实现算法。   在书中,作者选取许多具有典型意义的复杂编程和算法问题,生动描绘了历史上众大师们在探索解决方案中发生的轶事、走过的弯路和不断精益求精的历程,引导读者像真正的程序员和软件工程师那样富于创新性地思考,并透彻阐述和总结了许多独特而精妙的设计原则、思考和解决问题的方法以及实用程序设计技巧。解决方案的代码均以C/C++语言编写,不仅有趣,而且有很大的实战示范意义。每章后所附习题极具挑战性和启发性,书末给出了简洁的解答。 《编程珠玑(第2版)》是计算机科学方面的经典名著。书的内容围绕程序设计人员面对的一系列实际问题展开。作者Jon Bentley 以其独有的洞察力和创造力,引导读者理解这些问题并学会解决方法,而这些正是程序员实际编程生涯中至关重要的。 《编程珠玑(第2版)》的特色是通过一些精心设计的有趣而又颇具指导意义的程序,对实用程序设计技巧及基本设计原则进行了透彻而睿智的描述,为复杂的编程问题提供了清晰而完备的解决思路。《编程珠玑(第2版)》对各个层次的程序员都具有很高的阅读价值。 作者简介 Jon Bentley,世界著名计算机科学家,被誉为影响算法发展的十位大师之一。他先后任职于卡内基—梅隆大学(1976—1982)、贝尔实验室(1982—2001)和Avaya实验室(2001年至今)。在卡内基—梅隆大学担任教授期间,他培养了包括Tcl语言设计者John Ousterhout、Java语言设计者James Gosling、《算法导论》作者之一Charles Leiserson在内的许多计算机科学大家。2004年荣获Dr.Dobbs程序设计卓越奖。 钱丽艳,北京大学信息科学技术学院基础实验教学研究所软件实验室主任、工程师,毕业于国防科技大学。
pdf
程序员修炼之道 从小工到专家
标签:程序员修炼
积分:1 下载次数:76资源类型:技术书籍上传者:tiankai001上传时间:2013-10-22
简介:编辑推荐 本书所涉及的内容很广,涵盖了程序员成长过程中和软件开发过程中要注意的地方。从程序员的个体哲学到编码过程中的各个环节,再到团队的项目管理:从程序员要如何扩充知识,如何思考问题,如何利用有效的工具打造个人的工作环境,到项目启动之前如何建立一些基本准则,如何分析、设计、编写、测试、重构,如何实现自动化,甚至是项目团队中提高实效的原则。无论你是初学者,是有经验的程序员,还是软件项目经理,本书都适合你阅读。 内容推荐 《程序员修炼之道》由一系列独立的部分组成,涵盖的主题从个人责任、职业发展,直到用于使代码保持灵活、并且易于改编和复用的各种架构技术,利用许多富有娱乐性的奇闻轶事、有思想性的例子及有趣的类比,全面阐释了软件开发的许多不同方面的最佳实践和重大陷阱。无论你是初学者,是有经验的程序员,还是软件项目经理,本书都适合你阅读。 作者简介 作者:(美国)亨特(Andrew Hunt) (美国)托马斯(David Thomas) 译者:马维达 亨特(Andy Hunt)是一位热切的木匠和音乐家,但奇怪的是,人们更需要作为顾问的他。他的工作领域包括电信、银行、金融服务、公共服务,以及一些更奇特的领域,比如医学成像、图形艺术、Internet服务。 Andy的专长是把经过验证的技术与先进的技术混合在一起,创建各种新颖的——但也是实用的——解决方案。Andy在北卡罗莱纳州的罗利市拥有自己的顾问公司。 托马斯(Dave Thomas),喜欢驾驶单引擎飞机飞行,并通过这样的方式为他的习惯付账:为各种难题寻找优雅的解决方案,提供诸多领域里的咨询服务——航空、银行、金融服务、电信、交通运输及Internet。 在于1994年移居美国前,Dave在英国创立了一家通过ISO9001认证的软件公司,为世界各地的客户开发成熟、定制的软件项目。Dave现在是一位独立顾问,居住在德克萨斯州的达拉斯。 以The Pragmatic Programmer,L.L.C的名义,Dave与Andy正在协同工作,把合起来超过四十年的专业经验带给美国各地的客户。 译者简介: 马维达,《C++网络编程(卷2)》与《ACE自适配通信环境技术文档》的译者,技术兴趣为C++网络编程(ACE)与分布式对象计算(Internet Communications Engine) 显示全部信息 目录 前言 序 第1章 注重实效的哲学 1 我的源码让猫给吃了 2 软件的熵 3 石头汤与煮青蛙 4 足够好的软件 5 你的知识资产 6 交流 第2章 注重实效的途径 7 重复的危害 8 正交性 9 可撤消性 10 曳光弹 11 原型与便笺 12 领域语言 13 估算 第3章 基本工具 14 纯文本的威力 15 shell游戏 16 强力编辑 17 源码控制 18 调试 19 文本操纵 20 代码生成器 第4章 注重实效的偏执 21 按合约设计 22 死程序不说谎 23 断言式编程 24 何时使用异常 25 怎样配平资源 第5章 弯曲,或折断 26 解耦与得墨忒耳法则 27 元程序设计 28 时间耦合 29 它只是视图 30 黑板 第6章 当你编码时 31 靠巧合编程 32 算法速率 33 重构 34 易于测试的代码 35 邪恶的向导 第7章 在项目开始之前 36 需求之坑 37 解开不可能解开的谜题 38 等你准备好 39 规范陷阱 40 圆圈与箭头 第8章 注重实效的项目 41 注重实效的团队 42 无处不在的自动化 43 无情的测试 44 全都是写 45 极大的期望 46 傲慢与偏见 附录A 资源 专业协会 建设藏书库 Internet资源 参考文献 附录B 练习解答 索引 注重实效的程序员之快速参考指南
pdf
大道至简:软件工程实践者的思想
标签:软件工程实践
积分:1 下载次数:30资源类型:技术书籍上传者:tiankai001上传时间:2013-10-22
简介:内容推荐 《大道至简:软件工程实践者的思想(典藏版)》提出了审视软件工程的全新视角和软件工程的体系模型(ehm,软件工程层状模型)。本书用非工程的方式重新解析软件工程现象,全面、细致而深刻地分析了工程中各个环节的由来、价值及其内在关系。综合论述开发、工程二者的现状,例如对程序员“工匠思想”的起源进行广征博引的分析,也对工程中“敏捷过程”的经验主义本质进行深至髓质的论证。全书语言轻快,可读性强,薄且有味。   《大道至简:软件工程实践者的思想(典藏版)》是在“思想方法学”这一软件工程尚未涉足过的领域中的实习之作。作者亲历国内软件工程的英雄时代、泡沫时代,从失败中醒觉而创建独特的思考方法,对软件开发、工程中的现状深刻反思,从而完成这本专著。在缺乏独立思维、对国外工程理论亦步亦趋的国内工程界、开发业界,该书无疑是一份激荡新思的佳作。本书是第一本讨论软件工程思想本源的书籍,也是第一本从工程实践出发溯源而论的佳作。   本典藏版在内容上以该书第二版为底本并进行了大量的文字修订,补充追加了第三版中的“具体工程”一章。并且,考虑到典藏的价值,本书收录了公开文档“幕后故事”的精华摘选。 作者简介 周爱民(Aimingoo),有十余年的软件开发、项目管理、团队建设的经验。曾任多家软件公司高级程序设计师、项目经理、部门经理、区域总经理等职,前支付宝(中国)公司业务架构师,前盛大网络平台架构师。目前主要从事软件工程、体系架构和语言基础方面的研究与实践。2001年,主持完成的“极光数据处理仓库中心系统”被河南省信息产业厅授予省高新技术产品二等奖。2003年,被美国Bodand公司授予“BodandDelphi产品专家”称号。2004年,出版《Delphi源代码分析》,被誉为“Delphi领域精品著作”。2005年,发布《大道至简——软件工程实践者的思想》第一版(电子版)。2006年,发起开源项目QomolangmaOpenProject,探讨语言系统基础技术。2008年,出版《JavaScript语言精髓与编程实践》,电子工业出版社。2008年,发起开源项目derlan9,探讨edangin delphi,以及erlang的应用技术。2009年,在开源项目QoBean中尝试MetaLanguage与DSL等实现。2009年,发布《动态函数式语言精髓》(电子版)。2012年,出版《JavaScript语言精髓与编程实践(第2版)》,电子工业出版社。2012年,出版《大道至易——实践者的思想》,人民邮电出版社。2007年至2012年,出版《大道至简——软件工程实践者的思想》第二版、第三版(点评版)、第四版(典藏版),电子工业出版社。 目录 第一章编程的精义 1 第一节编程的精义 2 第二节 能不能学会写程序的问题 3 第三节 程序 = 算法 + 结构 4 第四节语言 6 第五节 在没有工程的时代 6 第二章是懒人造就了方法 9 第一节 是懒人造就了方法 10 第二节一百万行代码是可以写在一个文件里的 11 第三节 你桌上的书是乱的吗 13 第四节 我的第一次思考:程序 =算法 + 结构 + 方法 14 第三章团队缺乏的不只是管理 21 第一节 三个人的团队 22 第二节 做项目 = 死亡游戏 24 第三节 做ISO 质量体系的教训 25 第四节 谁动摇了你的制度 27 第五节 “那我们就开始开发吧” 28 第六节 组织的学问:角色 29 第七节跟随蚂蚁,但不要栽进蚂蚁洞里 31 第八节 “什么是增值税发票?” 33 第四章流于形式的沟通 37 第一节客户不会用C,难道就会用UML 吗 38 第二节项目文档真的可以用甲骨文来写 39 第三节 沟通的三层障碍 42 第四节最简沟通 45 第五节为不存在的角色留下沟通的渠道 47 第六节 流于形式的沟通 49 第五章失败的过程也是过程 51 第一节 做过程不是做工程 52 第二节 做过场 54 第三节 实现,才是目的 54 第四节 过程不是死模型 55 第五节 “刻鹄类鹜”与“画虎类狗” 57 第六节 工程不是做的,是组织的 59 第六章 谁是解结的人 61 第一节 是谁的问题 62 第二节 正视你的成功 64 第三节 总得先做点儿什么吧 65 第四节 你不是团队的腿 68 第五节三鼓而竭 71 第六节先人后己 74 第七节自相矛盾 76 第七章 从编程到工程 79 第一节 语言只是工具 80 第二节 关注点 81 第三节程序 82 第四节方法 83 第五节过程 84 第六节工程 85 第七节组织 87 第八节 BOSS 89 第九节上帝之手 90 第八章你看得到工具的本质吗 95 第一节 利器何以为先 96 第二节 神乎其技又有什么用呢 97 第三节 工具的本质 98 第四节惟手熟尔 100 第五节 鲁班带了个坏头 101 第六节工匠思想 103 第七节 化而用之,融通与融同 105 第八节南橘北枳 109 第九章 现实中的软件工程 113 第一节 大公司手中的算盘 114 第二节 思考项目成本的经理 118 第三节审视AOP 121 第四节 审视MDA/MDD 122 第五节 审视AP 和XP 125 第十章具体工程 131 第一节预言——《人月神话》及其地位 132 第二节错误的命题——对《人月神话》的反思 136 第三节 具体工程以及工程的具体化 139 第四节控制规模 142 第五节 隔离问题域 145 第六节 这样是不是太简单了 148 第七节郑人的履 150 第十一章 是思考还是思想 153 第一节 软件工程三个要素的价值 154 第二节 其实RUP 是一个杂物箱 155 第三节 UML 与甲骨文之间的异同 156 第四节经营者离开发者很远,反之亦然 157 第五节 矛盾:实现目标与保障质量 157 第六节 枝节与细节 158 第七节 细解“法”与“式” 159 显示部分信息 媒体评论 不要急   我是天生的急脾气。据父母说,我曾经与哥哥各分得一桃,便见我一口、两口,未等到第三口咬实在,桃就已经全下了肚。然后便眼巴巴地看着哥哥吃得欢乐,而我却连桃的滋味都不太知道。   不知道我的父母是不是拿了《西游记》中的故事来哄我,但若以我小时候的性急,确实可以做到“桃味不知”。以至于到了后来,等到我十多岁的时候,渐渐懂事了,便在自己的书房写了一幅字:默然心自澄,谦逊品渐高。   个中还有许多缘由,但终归是渐渐地安静了下来。   安静下来了,便有了机会来反思一下。若是总急于去解释什么、争辩什么,那么眼里便只见别人的弊端,耳中便只有别人的错漏,因而也就总是很难回头来看看自己。可能那个自己,正立在田间地头指指戳戳,出言絮絮状若村妇。   读书   在我看来,反思既不是设问,也不是反问,更不是某种思维法(例如逆向思维),它只意味着对一个目标的持续关注。
pdf
代码之美.精简版
标签:代码之美
积分:1 下载次数:12资源类型:技术书籍上传者:tiankai001上传时间:2013-10-22
简介:代码之美.精简版 目录 译者序 序 前言 第1章 正则表达式匹配器 1.1 编程实践 1.2 实现 1.3 讨论 1.4 其他的方法 1.5 构建 1.6 小结 第2章 Subversion中的增量编辑器:像本体一样的接口 2.1 版本控制与目录树的转换 2.2 表达目录树的差异 2.3 增量编辑器接口 2.4 但这是不是艺术? 2.5 像体育比赛一样的抽象 2.6 结论 第3章 我编写过的最漂亮代码 3.1 我编写过的最漂亮代码 3.2事倍功半 3.3 观点 3.4 本章的中心思想是什么? 3.5 结论 3.6致谢 第4章 查找 4.1. 耗时 4.2. 问题:博客数据 4.3. 问题:时间,人物,以及对象? 4.4. 大规模尺度的搜索 4.5. 结论 第5章 正确、优美、迅速(按重要性排序):从设计XML验证器中学到的经验 5.1 XML验证器的作用 5.2 问题所在 5.3 版本1:简单的实现 5.4 版本2:模拟BNF语法——复杂度O(N) 5.5 版本3: 第一个复杂度O(log N)的优化 5.6 版本4: 第二次优化:避免重复验证 5.7 版本5: 第三次优化:复杂度 O(1) 5.8 版本 6: 第四次优化:缓存(Caching) 5.9 从故事中学到的 第6章 集成测试框架:脆弱之美 6.1. 三个类搞定一个验收测试框架 6.2. 框架设计的挑战 6.3. 开放式框架 6.4. 一个HTML解析器可以简单到什么程度? 6.5. 结论 第7章 美丽测试 7.1 讨厌的二分查找 7.2 JUnit简介 7.3将二分查找进行到底 7.4 结论 第8章 图像处理中的即时代码生成 第9章 自顶向下的运算符优先级 9.1. JavaScript 9.2. 符号表 9.3. 语素 9.4. 优先级 9.5. 表达式 9.6. 中置运算符 9.7. 前置操作符 9.8. 赋值运算符 9.9. 常数 9.10. Scope 9.11. 语句 9.12. 函数 9.13. 数组和对象字面量 9.14. 要做和要思考的事 第 10章 追求加速的种群计数 10.1. 基本方法 10.2. 分治法 10.3. 其他方法 10.4. 两个字种群计数的和与差 10.5. 两个字的种群计数比较 10.6. 数组中的1位种群计数 10.7. 应用 第11章 安全通信:自由的技术 11.1 项目启动之前 11.2剖析安全通信的复杂性 11.3 可用性是关键要素 11.4 基础 11.5 测试集 11.6 功能原型 11.7 清理,插入,继续…… 11.8 在喜马拉雅山的开发工作 11.9 看不到的改动 11.10 速度确实重要 11.11 人权中的通信隐私 11.12 程序员与文明 第12章 在BioPerl里培育漂亮代码 12.1. BioPerl和Bio::Graphics模块 12.2. Bio::Graphics的设计流程 12.3. 扩展Bio::Graphics 12.4. 结束语和教训 第13章 基因排序器的设计 13.1 基因排序器的用户界面 13.2 通过Web跟用户保持对话 13.3. 多态的威力 13.4 滤除无关的基因 13.5 大规模美丽代码理论 13.6 结论 第14章 优雅代码随硬件发展的演化 14.1. 计算机体系结构对矩阵算法的影响 14.2 一种基于分解的方法 14.3 一个简单版本 14.4 LINPACK库中的DGEFA子程序 14.5 LAPACK DGETRF 14.6递归LU 14.7 ScaLAPACK PDGETRF 14.8 针对多核系统的多线程设计 14.9 误差分析与操作计数浅析 14.10 未来的研究方向 14.11 进一步阅读 第15章 漂亮的设计会给你带来长远的好处 15.1. 对于漂亮代码的个人看法 15.2. 对于CERN库的介绍 15.3. 外在美(Outer Beauty) 15.4. 内在美(Inner Beauty ) 15.5. 结论 第16章,Linux内核驱动模型:协作的好处 16.1 简单的开始 16.2 进一步简化 16.3 扩展到上千台设备 16.4 小对象的松散结合 第17章 额外的间接层 17.1. 从直接代码操作到通过函数指针操作 17.2. 从函数参数到参数指针 17.3. 从文件系统到文件系统层 17.4. 从代码到DSL(Domain-Specific Language) 17.5. 复用与分离 17.6.分层是永恒之道? 第18章 Python的字典类:如何打造全能战士 18.1. 字典类的内部实现 18.2. 特殊调校 18.3. 冲突处理 18.4. 调整大小 18.5. 迭代和动态变化 18.6. 结论 18.7. 致谢 第19章 NumPy中的多维迭代器 19.1 N维数组操作中的关键挑战 19.2 N维数组的内存模型 19.3NumPy迭代器的起源 19.4 迭代器的设计 19.5 迭代器的接口 19.6 迭代器的使用 19.7 结束语 第20章 NASA火星漫步者任务中的高可靠企业系统 20.1 任务与CIP 20.2 任务需求 20.3 系统架构 20.4 案例分析:流服务 20.5 可靠性 20.6 稳定性 20.7 结束语 第21章 ERP5:最大可适性的设计 21.1 ERP的总体目标 21.2 ERP5 21.3 Zope基础平台 21.4 ERP5 Project中的概念 21.5 编码实现ERP5 Project 21.6 结束语 第22章 一匙污水 第23章 MapReduce分布式编程 23.1 激动人心的示例 23.2 MapReduce编程模型 23.3 其他MapReduce示例 23.4 分布式MapReduce的一种实现 23.5 模型扩展 23.6 结论 23.7 进阶阅读 23.8 致谢 23.9 附录:单词计数解决方案 第24章 美丽的并发 24.2 软件事务内存 24.3 圣诞老人问题 24.4 对Haskell的一些思考 24.6 致谢 第25章 句法抽象:syntax-case 展开器 25.1. syntax-case简介 25.2. 展开算法 25.3. 例子 25.4. 结论 第26章 节省劳动的架构:一个面向对象的网络化软件框架 26.1 示例程序:日志服务 26.2 日志服务器框架的面向对象设计 26.3 实现串行化日志服务器 26.4 实现并行日志服务器 26.5 结论 第27章 以REST方式集成业务伙伴 27.1 项目背景 27.2 把服务开放给外部客户 27.3 使用工厂模式转发服务 27.4 用电子商务协议来交换数据 27.5 结束语 第28章 漂亮的调试 28.1 对调试器进行调试 28.2 系统化的过程 28.3 关于查找的问题 28.4 自动找出故障起因 28.5 增量调试 28.6 最小化输入 28.7 查找缺陷 28.8 原型问题 28.9 结束语 28.10 致谢 28.11 进一步阅读 第29章 把代码当作文章 第30章 当你与世界的联系只有一个按钮 30.1 基本的设计模型 30.2 输入界面 30.3 用户界面的效率 30.4 下载 30.5 未来的发展方向 第31章 Emacspeak:全功能音频桌面 31.1 产生语音输出 31.2 支持语音的Emacs 31.3 对于在线信息的简单访问 31.4 小结 31.5 致谢 第32章 变动的代码 32.1 像书本一样 32.2 功能相似的代码在外观上也保持相似 32.3 缩进带来的危险 32.4 浏览代码 32.5 我们使用的工具 32.6 DiffMerge的曲折历史 32.7 结束语 32.8 致谢 32.9 进一步阅读 第33章 为“The Book”编写程序 33.1 没有捷径 33.2 给Lisp初学者的提示 33.3 三点共线 33.4 不可靠的斜率 33.5 三角不等性 33.6 河道弯曲模型 33.7 “Duh!”——我的意思是“Aha!” 33.8 结束语 33.9 进一步阅读 后记 作者简介
pdf
华为开发规范.pdf
标签:华为开发规范
积分:1 下载次数:0资源类型:应用文档上传者:mamselc上传时间:2013-09-29
简介: 华为开发规范……
pdf
程序设计语言实践之路
标签:程序设计
积分:1 下载次数:27资源类型:技术书籍上传者:tiankai001上传时间:2013-10-22
简介:程序设计语言实践之路 作者简介 作者:(美国)斯科特(Scott Michael L.) 译者:裘宗燕 Michael L.Scott是罗切斯特大学计算机科学系的教授,1996至1999年任系主任。他是Lynx分布式程序设计语言的设计者、与他人合作设计了Charlotte和Psyche并行操作系统、Bridge并行文件系统、Cashmere分布式共享存储系统和MCS互斥锁。他在1985年由麦迪逊的威斯康星大学获得博士学位。 裘宗燕,北京大学数学学院信息科学系教授,教育部高等学校文科计算机基础教学指导委员会委员。长期从事计算机软件与理论、程序设计语言和符号计算方面的研究和教学工作。国内著名译者和作者,翻译出版了多本国外计算机经典名著,如《C++程序设计语言(特别版)》、《计算机程序的构造和解释(第二版)》,深得国内读者好评。 3内容简介 这是一本很有特色的教材,其核心是讨论程序设计语言的工作原理和技术。本书融合了传统的程序设计语言教科书和编译教科书的有关知识,并增加了一些有关汇编层体系结构的材料,以满足没学过计算机组织的学生们的需要。书中通过各种语言的例子,阐释了程序设计语言的重要基础概念,讨论了各种概念之间的关系,解释了语言中许多结构的形成和发展过程,以及它们演化为今天这种形式的根源。书中还详细讨论了编译器的工作方式和工作过程,说明它们对源程序做了什么,以及为什么要那样做。书的每章最后附有复习题和一些更具挑战性的练习。这些练习的特别价值在于引导学生进一步深入理解各种语言和技术。 本书在美国大学已有使用了十余年,目前被欧美许多重要大学用于“程序设计语言”或者“软件系统”课程。本书适合高年级本科生或者一年级研究生使用,许多内容对专业程序员也很有价值。本书作者Michael Scott是计算机领域的著名学者,译者是北京大学的裘宗燕教授,他熟悉专业,译笔流畅,是一本难得的著、译双馨的佳作。 4媒体评论 书评 “创新性地将程序设计语言设计与编译器设计有机结合的实用教本。被全球上百所大学、学院列为标准教材和首席参考书目!” 《程序设计语言——实践之路》讨论了正在使用中的各种最重要的语言的基本原理,着重探究了语言设计和语言实现之间各个方面的关键性联系,强调了其中对于专业程序员最重要的各种问题。由于其严格而又容易被人接受的讲述风格,它能够帮助你做好准备,使你能为特定的工作项目选择最好的语言,更有效地使用已经了解的语言,更快更完整地学习新语言。 特点: 讨论了程序设计语言设计的各种最新发展,其中涉及超过40种不同的语言,包括Ada 95,C,C++, Fortran95,Java,Lis p,Scheme,ML,Modula-3 Pascal和Prglo. 特别关注实现方面的问题编译器所使用的技术和相关工具如何影响着语言的设计,以有另一个方向的影响。 覆盖了语言设计和实现的许多高级论题,例如迭代器,协作程序,模板,分别编译,I/O,类型推理和异常处理等。 论述了汇编层体系结构中的一些与语言相关的问题,这些在帮助人们理解编译器究竟对程序做了些什么方面是至关重要的。 深入讨论了有关面向对象程序设计的问题,包括多重继承和方法约束。 用一个特别的小节讨论静态连接和动态连接。 包含了深入探讨并发性的一章,讨论了共享存储和消息传递语言和库的许多深入细节。 对于编译的形式基础,函数式程序设计的形式基础和逻辑程序设计的形式基础,都提供了易于理解的基本材料。 5目录 前言 第1章 引言 1.1 语言设计的艺术 1.2 程序设计语言的谱系 1.3 为什么研究程序设计语言 1.4 编译和解释 1.5 程序设计环境 1.6 编译概览 1.6.1 词法和语法分析 1.6.2 语义分析和中间代码生成 1.6.3 目标代码生成 1.6.4 代码改进 1.7 总结和注记 1.8 复习 1.9 练习 1.10 有关参考文献 第2章 程序设计语言的语法 2.1 描述语法:正则表达式和上下文无关文法 2.1.1 单词和正则表达式 2.1.2 上下文无关文法 2.1.3 推导和语法分析树 2.2 识别语法:扫描器和语法分析器 2.2.1 扫描 2.2.2 自上而下和自下而上的语法分析 2.2.3 递归下降 2.2.4 语法错误 2.2.5 表格驱动的自上而下语法分析 2.2.6 自下而上的语法分析 2.3 理论基础 2.3.1 有穷自动机 2.3.2 下推自动机 2.3.3 文法和语言类 2.4 总结和注记 2.5 复习 2.6 练习 2.7 有关参考文献 第3章 名字、作用域和约束 3.1 约束时间的概念 3.2 对象生存期和存储管理 3.2.1 基于堆栈的分配 3.2.2 堆分配 3.2.3 废料收集 3.3 作用域规则 3.3.1 静态作用域 3.3.2 动态作用域 3.3.3 符号表 3.3.4 关联表和中心引用表列 3.4 引用环境的约束 3.4.1 子程序闭包 3.4.2 一级和二级子程序 3.5 重载和相关概念 3.6 语言设计中与名字有关的缺陷 3.6.1 作用域规则 3.6.2 分别编译 3.7 总结和注记 3.8 复习 3.9 练习 3.10 有关参考文献 第4章 语义分析 4.1 语义分析器所扮演的角色 4.2 属性文法 4.3 属性流 4.4 动作例程 4.5 属性的空间管理 4.5.1 自下而上求值 4.5.2 自上而下求值 4.6 语法树的标注 4.7 总结和注记 4.8 复习 4.9 练习 4.10 有关参考文献 第5章 汇编层计算机体系结构 …… 第6章 控制流 第7章 数据类型 第8章 子程序和控制抽象 第9章 构造可运行程序 第10章 数据抽象和面向对象 第11章 非命令式程序设计模型:函数式和逻辑式语言 第12章 并发 第13章 代码改进 附录A 本书中提到的程序设计语言 附录B 语言设计和语言实现 参考书目 索引

评论

登录/注册

意见反馈

求资源

回顶部

最新下载

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版 版权声明

北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved
$(function(){ var appid = $(".select li a").data("channel"); $(".select li a").click(function(){ var appid = $(this).data("channel"); $('.select dt').html($(this).html()); $('#channel').val(appid); }) })