《代码之髓:编程语言核心概念》作者从编程语言设计的角度出发,围绕语言中共通或特有的核心概念,通过语言演变过程中的纵向比较和在多门语言中的横向比较,清晰地呈现了程序设计语言中函数、类型、作用域、类、继承等核心知识。本书旨在帮助读者更好地理解各种概念是因何而起,并在此基础上更好地判断为何使用、何时使用及怎样使用。同时,在阅读本书后,读者对今后不断出现的新概念的理解能力也将得到提升。
《代码之髓:编程语言核心概念》力求简明、通俗,注重可读性,可作为大学计算机科学和软件工程等专业程序设计语言概论教材、计算机等级考试的参考资料,也可作为软件开发人员的学习参考书。
第1章
如何深入高效地学习语言1
1.1 在比较中学习2
语言不同,规则不同2
c语言和ruby语言中的真假值3
java语言中的真假值3
1.2 在历史中学习4
理解语言设计者的意图4
应该学哪种语言,我们无从所知4
学习适用于各种语言的知识5
1.3 小结6
第2章
程序设计语言诞生史7
2.1 程序设计语言诞生的历史8
连接电缆8
程序内置9
fortran语言问世10
2.2 程序设计语言产生的原因11
懒惰:程序员的三大美德之一11
语言们各有各的便捷12
2.3 小结13
第3章
语法的诞生15
3.1 什么是语法16
运算符的优先顺序16
语法是语言设计者制定的规则17
3.2 栈机器和forth语言17
计算的流程18
如何表达计算顺序18
现在仍然使用的栈机器19
3.3 语法树和lisp语言20
计算流20
如何表达计算顺序20
现在仍然使用的语法树21
专栏 要确认理解是否正确,首先得表达出来23
3.4 中缀表示法24
语法分析器24
规则的竞争25
专栏 当你不知道该学习什么时25
3.5 小结26
第4章
程序的流程控制27
4.1 结构化程序设计的诞生28
4.2 if语句诞生以前28
为什么会有if语句28
为什么会有if...else语句30
4.3 while语句——让反复执行的if语句更简洁33
使用while语句的表达方式33
不使用while语句的表达方式34
4.4 for语句——让数值渐增的while语句更简洁35
使用for语句的表达方式35
不使用for语句的表达方式35
foreach——根据处理的对象来控制循环操作36
4.5 小结37
第5章
函数39
5.1 函数的作用40
便于理解——如同一个组织40
便于再利用——如同零部件41
程序中再利用的特征41
5.2 返回命令42
函数的诞生43
记录跳转目的地的专用内存44
专栏 函数命名45
栈45
5.3 递归调用47
嵌套结构体的高效处理48
嵌套结构体的处理方法48
5.4 小结52
第6章
错误处理53
6.1 程序也会出错54
6.2 如何传达错误55
通过返回值传达出错信息55
出错则跳转58
6.3 将可能出错的代码括起来的语句结构61
john goodenough 的观点61
引入clu语言62
引入c++语言62
引入windows nt 3.163
6.4 出口只要一个64
为什么引入finally64
成对操作的无遗漏执行64
6.5 何时抛出异常68
函数调用时参数不足的情况68
数组越界的情况69
出错后就要立刻抛出异常70
6.6 异常传递71
异常传递的问题71
java语言的检查型异常 71
检查型异常没有得到普及的原因73
专栏 具体的知识和抽象的知识73
专栏 学习讲求细嚼慢咽74
6.7 小结74
专栏 从需要的地方开始阅读75
第7章
名字和作用域77
7.1 为什么要取名78
怎样取名79
名字冲突80
如何避免冲突80
7.2 作用域的演变81
动态作用域82
静态作用域84
7.3 静态作用域是完美的吗88
专栏 其他语言中的作用域88
嵌套函数的问题89
外部作用域的再绑定问题91
7.4 小结93
第8章
类型95
8.1 什么是类型96
8.2 数值的on和off的表达方式97
数位的发明97
七段数码管显示器98
算盘99
8.3 一个数位上需要几盏灯泡100
从十进制到二进制100
八进制与十六进制102
8.4 如何表达实数103
定点数——小数点位置确定103
浮点数——数值本身包含小数部分何处开始的信息104
8.5 为什么会出现类型107
没有类型带来的麻烦107
早期的fortran语言中的类型108
告诉处理器变量的类型108
隐性类型转换109
8.6 类型的各种展开111
用户定义型和面向对象112
作为功能的类型112
总称型、泛型和模板113
动态类型116
类型推断118
8.7 小结122
专栏 先掌握概要再阅读细节122
第9章
容器和字符串125
9.1 容器种类多样126
9.2 为什么存在不同种类的容器127
数组与链表127
链表的长处与短处130
专栏 大o表示法——简洁地表达计算时间和数据量之间的关系131
语言的差异132
9.3 字典、散列、关联数组132
散列表133
树134
元素的读取时间136
没有万能的容器138
9.4 什么是字符139
字符集和字符的编码方式139
计算机诞生以前的编码140
edsac的字符编码142
ascii时代和ebcdic时代142
日语的编码144
shift_jis编码对程序的破坏145
魔术注释符147
unicode带来了统一148
9.5 什么是字符串150
带有长度信息的pascal语言字符串和不带这一信息的c语言字符串150
1个字符为16比特的java语言字符串153
python 3中引入的设计变更153
ruby 1.9的挑战154
9.6 小结155
第10章
并行处理157
10.1 什么是并行处理158
10.2 细分后再执行158
10.3 交替的两种方法159
协作式多任务模式——在合适的节点交替159
抢占式多任务模式——一定时间后进行交替160
10.4 如何避免竞态条件160
竞态条件成立的三个条件161
没有共享——进程和actor模型162
不修改——const、val、immutable164
不介入164
10.5 锁的问题及对策166
锁的问题166
借助事务内存来解决167
事务内存的历史168
事务内存成功吗169
10.6 小结170
第11章
对象与类171
11.1 什么是面向对象172
内涵因语言而异的面向对象172
对象是现实世界的模型174
什么是类175
11.2 归集变量与函数建立模型的方法175
11.3 方法1:模块、包176
什么是模块、包176
用perl语言的包设计对象177
光有模块不够用178
分开保存数据179
向参数传递不同的散列179
把初始化处理也放入包中180
把散列和包绑定在一起181
11.4 方法2:把函数也放入散列中183
first class183
把函数放入散列中184
创建多个计数器185
把共享的属性放入原型中186
这就是面向对象吗189
11.5 方法3:闭包190
什么是闭包190
为什么叫做闭包191
11.6 方法4:类191
霍尔设想的类192
c++语言中的类192
功能说明的作用193
类的三大作用193
11.7 小结194
第12章
继承与代码再利用195
12.1 什么是继承196
继承的不同实现策略197
继承是把双刃剑199
里氏置换原则199
12.2 多重继承201
一种事物在多个分类中201
多重继承对于实现方式再利用非常便利202
12.3 多重继承的问题——还是有冲突203
解决方法1:禁止多重继承205
解决方法2:按顺序进行搜索207
解决方法3:混入式处理211
解决方法4:trait213
12.4 小结216
专栏 从头开始逐章手抄217
CAD/CAM专业英语 本书特色 本书详细地介绍了机械类计算机辅助设计专业学生应掌握的专业术语英语表示方法。内容包括金属材料及热处理、锻压、焊接、金属切削机床、...
《电脑时代的先锋》内容简介:人类学家玛格丽特·米德认为,人类发展的历史将经历三种不同的文化:前喻文化是后代人必须向前代人
《HTML+CSS网页设计与布局从入门到精通》紧密围绕网页设计师在制作网页过程中的实际需要和应该掌握的技术,全面介绍了使用HTML和
《聪明女人的66封读心札记》内容简介:本书将和大家一起揭开这些行为背后的心理秘密。生活就像是一场场博弈赛,能否成为最后的赢家
《全国法律硕士专业学位研究生入学联考考试指南(第二十二版)》内容简介:本书是由全国法律专业学位研究生教育指导委员会组编的针
《理性的设计感性的空间:法国DBLANT都林国际设计》贯穿了30余篇设计师的文章,对设计机构的发展模式、设计项目的管理及设计过程中
《历史其实很有趣》内容简介:尽管那些往昔的古人已经永久地沉睡,可他们当初一个思想的变化或是对一件事情处理得稳妥与否,却对我
《匿名的风景》内容简介:这是一本关于摄影思考的杂记,这本书中试图讨论三件事:一是摄影的意义与目的;二是从“糖水片”这个现象
啊哈C语言!-逻辑的挑战-(修订版) 本书特色 《啊哈C语言!逻辑的挑战(修订版)》是一本非常有趣的编程启蒙书,《啊哈C语言!逻辑的挑战(修订版)》从中小学生的...
《一本书读懂互联网思维》内容简介:互联网思维能给传统企业带来什么机遇?它又有什么特点?它颠覆了传统商业模式,又开创了什么样
《汽车标识符号全知道》内容简介:《汽车标识符号全知道》按品牌标识、车身上标识、驾驶操作标识的顺序,以图解的方式对汽车上常见
《逻辑思维游戏大全集》内容简介:本书选取了近千个经典有趣的逻辑思维游戏,按照思维方法分类,详细讲解了十七大类逻辑思维方法的
CATIA V5 从入门到精通 本书特色 《CATIA V5从入门到精通》是上海软件行业协会秘书长,长根兴,江苏省软件行业协会副会长徐雷,盛选禹哲。3大综合案例...
本书从2001年世界电信业的那场危机谈起,解读了电信行业领先者成国的奥秘,探寻了成功的电信市场进入战略,调查了良好合作的真相
主板维修技能实训 本书特色 《主板维修技能实训(附光盘)》由专业维修工程师王红军根据多年实践经验精心编写,重点讲解了电脑主板的结构、原理及故障维修诊断方法,主要...
《我的Flex我精通:RIA高级开发指南》是一本介绍使用Flex3进行富互联网应用系统开发的专业著作,内容涵盖了与Flex应用相关的各个领
《黑白画理》无疑是一部囊括绘画规律和原则的学术力作。它始于从远古迈入,终于向未来走去。深刻、透彻,深入浅出的精练文字,进
《飞向太空港》内容简介:《飞向太空港》是对人类航天和中国航天的悲壮历程所能容涵的丰富而深刻的社会历史、人生内容的一次顿悟,
《DSLR数码单反摄影宝典》内容简介:《DSLR数码单反摄影宝典》共分五篇18章,从基础入门开始为读者介绍如何定位相机,并根据需要挑
《工业设计》内容简介:本书紧扣当今工业设计学的热点、难点与重点,涵盖了广义工业设计所包括的设计概念及设计思潮、工业设计流程