楔子 14
00:00AM 14
真言的含义 18
关于读者 18
阅读建议 18
书写习惯 18
你的心声 19
特殊声明 19
我所要感谢的朋友 19
第一章 编程随想 21
第一节 编程的起源 21
第二节 编程的灵魂 23
一、抽象的破译 25
1.一些表象的东西 25
2.一些不那么表象的东西 26
3.绝对本质的东西 27
二、抽象的启示 28
三、我的话 29
第三节 编程的学习 30
一、引子 30
二、编程入门 31
三、编程进阶 32
四、编程学习的心态 33
1.何谓高手 33
2.耐性的含义 34
五、编程知识体系 35
1.编程知识体系 36
2.造就真正的不同 37
六、编程的道 38
1.游戏的启示 38
2.艺术的回炉 39
3.数学的魔力 39
七、我的话 40
第四节 编程的感悟 41
一、Chen Su 42
二、Mark M Lambert 43
三、Todd Niec 48
四、Rick Blommers 52
五、Tom Deprez 56
第五节 参考书的选择 59
一、买书前应该知道的 59
二、买书时应该注意的 61
三、在失望来袭的时候 64
四、我的话 64
第二章 编程预备役 66
第一节 感性视角 66
一、语言的抽象 67
1.抽象的实现 68
2.抽象的来源 70
二、语言二惑 70
1.编程语言的林林总总 70
2.编程语言的是是非非 71
(1)矛盾在哪里 72
(2)问题在这里 73
第二节 理性视角 74
一、历史的启示 74
二、核心的澄清 75
三、核心漫游 76
1.数据类型 76
(1)理论中的数据类型 76
(2)现实中的数据类型 77
2.运行逻辑控制 78
(1)陈述与表达式 78
(2)内部运行逻辑控制 79
(3)相互间的运行逻辑控制 79
3.实例控制 80
(1)内存相关 80
(2)作用域相关 81
(3)现实中的实例控制 82
4.子程序控制 83
(1)意义之所在 83
(2)基本调用实现 83
(3)参数控制 84
5.谈谈递归 85
6.错误处理 86
(1)核心理念 87
(2)假象的背后 87
(3)或少理论 88
(4)或多理论 90
(5)异常处理的思考 92
(6)职业素养的含义 94
第三节 现代语言的评价 95
一、从初学者的角度考虑 96
1.核心的实现 96
2.实现的差别 96
3.我的话 97
二、从实践者的角度考虑 98
1.抽象的完善度 98
2.虚拟社区的繁盛度 98
3.集成开发环境 99
4.多语言的协作 101
5.语言的应用域 101
6.新技术的支持度 102
7.语言的移植性 103
8.我的话 104
第四节 编程语言全接触 105
一、Assembly 110
二、C 112
三、C++ 115
四、Visual C++ 118
五、Visual Basic 122
第五节 软硬环境 124
一、从软环境谈起 124
二、硬环境小探 126
三、运作模式 126
1.段与偏移的引入 127
2.保护模式的理解 128
3.段转换机制 130
4.页面机制 134
第三章 编程涅槃 142
第一节 软件工程的渊源及核心 142
一、软件工程的渊源 143
二、软件工程的核心 144
三、善待的方式 145
第二节 编程灵感论 146
一、编程中的灵感 147
二、之原因,之所在 147
三、善待灵感的方式 148
四、平衡构思的尺度 149
五、灵感无效论 150
第三节 软件开发的工程蓝图 151
一、蓝图模板 152
二、软件开发属性描述 154
三、软件开发周期描述 154
四、软件开发控制描述 155
1.风险的探讨 156
五、开发日志与附注 158
六、我的话 159
第四节 最高层抽象的理念 160
一、分析与设计的差别 161
二、分析与设计的目的 162
三、路在何方? 164
四、从泰坦尼克的悲哀谈起 164
五、模块化应验的准则 166
六、耦合度与凝聚度 167
1.耦合度的衡量 167
2.凝聚度的衡量 168
3.两个完美与一个矛盾 169
七、我的话 169
第五节 最高层抽象的构架 170
一、开发范例之闲谈 171
二、面向对象开发范例 171
1.面向对象理念的精髓 172
(1)一纳米或是一光年? 172
(2)类是怎样成为代码的? 174
2.面向对象的脉络 175
(1)一些历史 176
(2)类的意义 176
(3)封装与信息隐藏 177
(4)类的接口 177
(5)继承与多态 178
三、周期模型之闲谈 180
1.核心理念 180
(1)解题的自然思维过程 181
(2)阶段的过渡 181
2.糟糕的瀑布模型 181
3.自然思维的回归 183
(1)风险的分散化 183
(2)原型的引入 183
4.循环渐进的引入 184
(1)由软件成品所想到的 184
(2)雕刻的道 185
5.循环与渐进 185
6.面向对象与循环渐进的结合 186
四、再谈善待 187
第六节 最高层抽象的实现 188
一、创造力vs机械化 189
二、开发角度的源代码质量考虑 189
1.编码风格 191
2.命名理念 191
(1)协调一致 192
(2)有实在意义 192
(3)易于书写和记忆 193
(4)匈牙利命名法 193
(5)HN的三宗罪 195
(6)我的话 195
3.注释 195
(1)核心理念 196
(2)我的话 197
4.源代码布局 197
(1)我的话 200
5.一些启发规律 200
(1)我的话 202
6.引入编码规范 202
三、应用角度的源代码质量考虑 202
1.优化概念 203
2.优化之五大真言 203
3.优化成为必要时 204
4.最后的榨取 205
(1)循环优化 207
(2)查询表优化 209
5.感性优化学 210
四、源代码调试一捉虫的游戏规则 210
1.调试的心态与思维 211
(1)准备工作 211
(2)虫子之生存观 212
(3)放飞想象 212
(4)捉虫思路 213
2.调试的方法与手段 213
(1)进行防备性编码 214
(2)善用调试机制 215
(3)侦错的自动化 217
3.休息理论 217
第四章 编程捷径 220
第一节 CIH病毒大揭密 220
一、病毒! 220
二、我的动机 221
三、基本属性 222
四、CIH病毒运作流水线 223
五、CIH病毒动作核心揭密 224
1.原体 224
2.Ring0权限的获取 225
3.结构化异常处理机制的修改 230
(1)异常在视窗系统中的含义 231
(2)SEH的工作原理 234
(3)一切就绪!修改SEH 235
4.Delta偏移 236
5.VxD的运作 237
(1)直击VxD 237
(2)VxD服务 238
6.文件API挂钩回调疑难解析 241
7.碎穴攻击的原理与实现 242
(1)PE格式点穴篇 242
(2)空穴的来源 243
(3)区段空穴的计算 244
(4)碎穴攻击的实现 245
8.原体大剖析 246
第五章 经典聚焦 280
焦点一:关机失效的元凶 280
焦点二:foo的传奇 282
焦点三:编译与解释 282
焦点四:一个范例 282
焦点五:冯·诺依曼体系 283
焦点六:数据对齐 283
焦点七:UML 285
焦点八:成员函数的隐藏 285
焦点九:多态的嵌入 286
焦点十:源码的美化 290
焦点十一:GOTO的正名 292
焦点十二:手工时耗检测示例 294
焦点十三:循环实现逻辑 296
焦点十四:Bug集中营 298
焦点十五:防御性编码 298
焦点十六:中断与异常 299
焦点十七:重定位的秘密 300
焦点十八:结构化的故事 302
焦点十九:语法与语义 303