当前位置:主页 > 计算机电子书 > 其它 > 编程概念下载
代码之髓:编程语言核心概念

代码之髓:编程语言核心概念 PDF 完整扫描版

  • 更新:2020-08-05
  • 大小:56.9 MB
  • 类别:编程概念
  • 作者:西尾泰和,曾一鸣
  • 出版:人民邮电出版社
  • 格式:PDF

  • 资源介绍
  • 学习心得
  • 相关内容

代码之髓:编程语言核心概念》作者从编程语言设计的角度出发,围绕语言中共通或特有的核心概念,通过语言演变过程中的纵向比较和在多门语言中的横向比较,清晰地呈现了程序设计语言中函数、类型、作用域、类、继承等核心知识。《代码之髓:编程语言核心概念》旨在帮助读者更好地理解各种概念是因何而起,并在此基础上更好地判断为何使用、何时使用及怎样使用。同时,在阅读本书后,读者对今后不断出现的新概念的理解能力也将得到提升。

《代码之髓:编程语言核心概念》力求简明、通俗,注重可读性,可作为大学计算机科学和软件工程等专业程序设计语言概论教材、计算机等级考试的参考资料,也可作为软件开发人员的学习参考书。

目录

  • 第1章 如何深入高效地学习语言
  • 1.1 在比较中学习
  • 语言不同,规则不同
  • C语言和Ruby语言中的真假值
  • Java语言中的真假值
  • 1.2 在历史中学习
  • 理解语言设计者的意图
  • 应该学哪种语言,我们无从所知
  • 学习适用于各种语言的知识
  • 1.3 小结
  • 第2章 程序设计语言诞生史
  • 2.1 程序设计语言诞生的历史
  • 连接电缆
  • 程序内置
  • FORTRAN语言问世
  • 2.2 程序设计语言产生的原因
  • 懒惰:程序员的三大美德之一
  • 语言们各有各的便捷
  • 2.3 小结
  • 第3章 语法的诞生
  • 3.1 什么是语法
  • 运算符的优先顺序
  • 语法是语言设计者制定的规则
  • 3.2 栈机器和FORTH语言
  • 计算的流程
  • 如何表达计算顺序
  • 现在仍然使用的栈机器
  • 3.3 语法树和LISP语言
  • 计算流
  • 如何表达计算顺序
  • 现在仍然使用的语法树
  • 专栏 要确认理解是否正确,首先得表达出来
  • 3.4 中缀表示法
  • 语法分析器
  • 规则的竞争
  • 专栏 当你不知道该学习什么时
  • 3.5 小结
  • 第4章 程序的流程控制
  • 4.1 结构化程序设计的诞生
  • 4.2 if语句诞生以前
  • 为什么会有if语句
  • 为什么会有if...else语句
  • 4.3 while语句--让反复执行的if语句更简洁
  • 使用while语句的表达方式
  • 不使用while语句的表达方式
  • 4.4 for语句--让数值渐增的while语句更简洁
  • 使用for语句的表达方式
  • 不使用for语句的表达方式
  • foreach--根据处理的对象来控制循环操作
  • 4.5 小结
  • 第5章 函数
  • 5.1 函数的作用
  • 便于理解--如同一个组织
  • 便于再利用--如同零部件
  • 程序中再利用的特征
  • 5.2 返回命令
  • 函数的诞生
  • 记录跳转目的地的专用内存
  • 专栏 函数命名
  • 5.3 递归调用
  • 嵌套结构体的高效处理
  • 嵌套结构体的处理方法
  • 5.4 小结
  • 第6章 错误处理
  • 6.1 程序也会出错
  • 6.2 如何传达错误
  • 通过返回值传达出错信息
  • 出错则跳转
  • 6.3 将可能出错的代码括起来的语句结构
  • John Goodenough 的观点
  • 引入CLU语言
  • 引入C++语言
  • 引入Windows NT 3.1
  • 6.4 出口只要一个
  • 为什么引入finally
  • 成对操作的无遗漏执行
  • 6.5 何时抛出异常
  • 函数调用时参数不足的情况
  • 数组越界的情况
  • 出错后就要立刻抛出异常
  • 6.6 异常传递
  • 异常传递的问题
  • Java语言的检查型异常
  • 检查型异常没有得到普及的原因
  • 专栏 具体的知识和抽象的知识
  • 专栏 学习讲求细嚼慢咽
  • 6.7 小结
  • 专栏 从需要的地方开始阅读
  • 第7章 名字和作用域
  • 7.1 为什么要取名
  • 怎样取名
  • 名字冲突
  • 如何避免冲突
  • 7.2 作用域的演变
  • 动态作用域
  • 静态作用域
  • 7.3 静态作用域是完美的吗
  • 专栏 其他语言中的作用域
  • 嵌套函数的问题
  • 外部作用域的再绑定问题
  • 7.4 小结
  • 第8章 类型
  • 8.1 什么是类型
  • 8.2 数值的on和off的表达方式
  • 数位的发明
  • 七段数码管显示器
  • 算盘
  • 8.3 一个数位上需要几盏灯泡
  • 从十进制到二进制
  • 八进制与十六进制
  • 8.4 如何表达实数
  • 定点数--小数点位置确定
  • 浮点数--数值本身包含小数部分何处开始的信息
  • 8.5 为什么会出现类型
  • 没有类型带来的麻烦
  • 早期的FORTRAN语言中的类型
  • 告诉处理器变量的类型
  • 隐性类型转换
  • 8.6 类型的各种展开
  • 用户定义型和面向对象
  • 作为功能的类型
  • 总称型、泛型和模板
  • 动态类型
  • 类型推断
  • 8.7 小结
  • 专栏 先掌握概要再阅读细节
  • 第9章 容器和字符串
  • 9.1 容器种类多样
  • 9.2 为什么存在不同种类的容器
  • 数组与链表
  • 链表的长处与短处
  • 专栏 大O表示法--简洁地表达计算时间和数据量之间的关系
  • 语言的差异
  • 9.3 字典、散列、关联数组
  • 散列表
  • 元素的读取时间
  • 没有万能的容器
  • 9.4 什么是字符
  • 字符集和字符的编码方式
  • 计算机诞生以前的编码
  • EDSAC的字符编码
  • ASCII时代和EBCDIC时代
  • 日语的编码
  • Shift_JIS编码对程序的破坏
  • 魔术注释符
  • Unicode带来了统一
  • 9.5 什么是字符串
  • 带有长度信息的Pascal语言字符串和不带这一信息的C语言字符串
  • 1个字符为16比特的Java语言字符串
  • Python 3中引入的设计变更
  • Ruby 1.9的挑战
  • 9.6 小结
  • 第10章 并行处理
  • 10.1 什么是并行处理
  • 10.2 细分后再执行
  • 10.3 交替的两种方法
  • 协作式多任务模式--在合适的节点交替
  • 抢占式多任务模式--一定时间后进行交替
  • 10.4 如何避免竞态条件
  • 竞态条件成立的三个条件
  • 没有共享--进程和actor模型
  • 不修改--const、val、Immutable
  • 不介入
  • 10.5 锁的问题及对策
  • 锁的问题
  • 借助事务内存来解决
  • 事务内存的历史
  • 事务内存成功吗
  • 10.6 小结
  • 第11章 对象与类
  • 11.1 什么是面向对象
  • 内涵因语言而异的面向对象
  • 对象是现实世界的模型
  • 什么是类
  • 11.2 归集变量与函数建立模型的方法
  • 11.3 方法1:模块、包
  • 什么是模块、包
  • 用Perl语言的包设计对象
  • 光有模块不够用
  • 分开保存数据
  • 向参数传递不同的散列
  • 把初始化处理也放入包中
  • 把散列和包绑定在一起
  • 11.4 方法2:把函数也放入散列中
  • first class
  • 把函数放入散列中
  • 创建多个计数器
  • 把共享的属性放入原型中
  • 这就是面向对象吗
  • 11.5 方法3:闭包
  • 什么是闭包
  • 为什么叫做闭包
  • 11.6 方法4:类
  • 霍尔设想的类
  • C++语言中的类
  • 功能说明的作用
  • 类的三大作用
  • 11.7 小结
  • 第12章 继承与代码再利用
  • 12.1 什么是继承
  • 继承的不同实现策略
  • 继承是把双刃剑
  • 里氏置换原则
  • 12.2 多重继承
  • 一种事物在多个分类中
  • 多重继承对于实现方式再利用非常便利
  • 12.3 多重继承的问题--还是有冲突
  • 解决方法1:禁止多重继承
  • 解决方法2:按顺序进行搜索
  • 解决方法3:混入式处理
  • 解决方法4:Trait
  • 12.4 小结
  • 专栏 从头开始逐章手抄

资源获取

资源地址1:https://pan.baidu.com/s/1hc1dwDm9wVDhOHGrZPG5Iw

相关资源

网友留言