《程序设计语言——实践之路【PDF】下载
《程序设计语言——实践之路【PDF】下载链接:
https://u253469.pipipan.com/fs/253469-230382240
内容简介
《程序设计语言——实践之路(第3版)》是一本很有特色的计算机教材,其核心是讨论程序设计语言的基本原理和技术。本书融合了传统的程序设计语言教科书和编译教科书的有关知识,并增加了一些有关汇编层体系结构的材料,以满足没学过计算机组织的学生们的需要。书中通过各种语言的例子,阐释了程序设计语言的重要基础概念,讨论了各种概念之间的关系,解释了语言中许多结构的形成和发展过程,以及它们演化为今天这种形式的根源。书中还详细讨论了编译器的工作方式和工作过程,说明它们对源程序做了什么,以及为什么要那样做。书的每章最后附有复习题和一些更具挑战性的练习与探索。这些练习的特别价值在于引导学生进一步深入理解各种语言和技术。本书第3版新增了关于运行时程序管理的讨论,对关于并发的一章做了重大的改写,并更新了大量的实例。
这本教材在美国大学已使用了二十余年,目前被欧美许多重要大学用于“程序设计语言”或者“软件系统”课程。
目录
第1部分
基础
第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.3
语法分析
2.3.1
递归下降
2.3.2
表格驱动的自上而下语法分析
2.3.3
自下而上的语法分析
2.3.4
语法错误
2.4
理论基础
2.4.1
有穷自动机
2.4.2
下推自动机
2.4.3
文法和语言类
2.5
总结和注记
2.6
练习
2.7
探索
2.8
有关参考文献
第3章
名字、作用域和约束
3.1
约束时间的概念
3.2
对象生存期和存储管理
3.2.1
静态分配
3.2.2
基于栈的分配
3.2.3
基于堆的分配
3.2.4
废料收集
3.3
作用域规则
3.3.1
静态作用域
3.3.2
嵌套子程序
3.3.3
声明的顺序
3.3.4
模块
3.3.5
模块类型和类
3.3.6
动态作用域
3.4
作用域的实现
3.4.1
符号表
3.4.2
关联表和中心引用表
3.5
作用域中名字的含义
3.5.1
别名
3.5.2
重载
3.5.3
多态性及相关概念
3.6
引用环境的约束
3.6.1
子程序闭包
3.6.2
一级值和非受限生存期
3.6.3
对象闭包
3.7
宏扩展
3.8
分别编译
3.8.1
C的分别编译
3.8.2
包和自动头文件推理
3.8.3
模块分层结构
3.9
总结和注记
3.10
练习
3.11
探索
3.12
有关参考文献
第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章
目标机体系结构
5.1
存储器层次结构
5.2
数据表示
5.2.1
整数算术
5.2.2
浮点数算术
5.3
指令集体系结构
5.3.1
寻址模式
5.3.2
条件和分支
5.4
体系结构和实现
5.4.1
微程序设计
5.4.2
微处理器
5.4.3
RISC
5.4.4
多线程和多核
5.4.5
两个示例体系结构:x86和MIPS
5.5
为新型处理器做编译
5.5.1
保持流水线满
5.5.2
寄存器分配
5.6
总结和注记
5.7
练习
5.8
探索
5.9
有关参考文献
第2部分
语言设计的核心问题
第6章
控制流
6.1
表达式求值
6.1.1
优先级和结合性
6.1.2
赋值
6.1.3
初始化
6.1.4
表达式中的顺序问题
6.1.5
短路求值
6.2
结构化和非结构化的流程
6.2.1
goto的结构化替代品
6.2.2
继续
6.3
顺序执行
6.4
选择
6.4.1
短路条件
6.4.2
Case/Switch语句
6.5
迭代
6.5.1
枚举控制的循环
6.5.2
组合循环
6.5.3
迭代器
6.5.4
lcon的生成器
6.5.5
逻辑控制的循环
6.6
递归
6.6.1
迭代和递归
6.6.2
应用序和正则序求值
6.7
非确定性
6.8
总结和注记
6.9
练习
6.10
探索
6.11
有关参考文献
第7章
数据类型
7.1
类型系统
7.1.1
类型检查
7.1.2
多态性
7.1.3
“类型”的含义
7.1.4
类型的分类
7.1.5
正交性
7.2
类型检查
7.2.1
类型等价
7.2.2
类型相容性
7.2.3
类型推理
7.2.4
ML类型系统
7.3
记录(结构)与变体(联合)
7.3.1
语法和运算
7.3.2
存储布局及其影响
7.33
with语句
7.3.4
变体记录(联合)
7.4
数组
7.4.1
语法和操作
7.4.2
维数、上下界和分配
7.4.3
内存布局
7.5
字符串
7.6
集合
7.7
指针和递归类型
7.7.1
语法和操作
7.7.2
悬空引用
7.7.3
废料收集
7.8
表
7.9
文件和输入/输出
7.9.1
交互式I/O
7.9.2
基于文件的I/O
7.9.3
正文I/O
7.10
相等检测和赋值
7.11
总结和注记
7.12
练习
7.13
探索
7.14
有关参考文献
第8章
子程序和控制抽象
8.1
回顾栈的布局
8.2
调用序列
8.2.1
区头向量
8.2.2
案例研究:在MIPS上实现C,在x86上实现Pascal
8.2.3
寄存器窗口
8.2.4
内联展开
8.3
参数传递
8.3.1
参数模式
8.3.2
名字调用
8.3.3
特殊目的的参数
8.3.4
函数返回
8.4
泛型子程序和模块
8.4.1
不同的实现方法
8.4.2
泛型参数的约束条件
8.4.3
隐式实例化
8.4.4
C++、Java和C#中的泛型
8.5
异常处理
8.5.1
异常的定义
8.5.2
异常的传播
8.5.3
异常的实现
8.6
协作程序
8.6.1
栈分配
8.6.2
转移
8.6.3
迭代器的实现
8.6.4
离散事件模拟
8.7
事件
8.7.1
顺序处理程序
8.7.2
基于线程的处理程序
4.8
总结和注记
8.9
练习
8.10
探索
更多资料请关注我的新浪博客http://blog.sina.com.cn/u/3283485963
《程序设计语言——实践之路(英文第三版)》【PDF】下载链接:
https://u253469.pipipan.com/fs/253469-230382240
更多书单和推荐电子书请关注:
http://zhaozhiyong.cn
《程序设计语言——实践之路【PDF】下载的更多相关文章
- 简单物联网:外网访问内网路由器下树莓派Flask服务器
最近做一个小东西,大概过程就是想在教室,宿舍控制实验室的一些设备. 已经在树莓上搭了一个轻量的flask服务器,在实验室的路由器下,任何设备都是可以访问的:但是有一些限制条件,比如我想在宿舍控制我种花 ...
- 利用ssh反向代理以及autossh实现从外网连接内网服务器
前言 最近遇到这样一个问题,我在实验室架设了一台服务器,给师弟或者小伙伴练习Linux用,然后平时在实验室这边直接连接是没有问题的,都是内网嘛.但是回到宿舍问题出来了,使用校园网的童鞋还是能连接上,使 ...
- 外网访问内网Docker容器
外网访问内网Docker容器 本地安装了Docker容器,只能在局域网内访问,怎样从外网也能访问本地Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 ...
- 外网访问内网SpringBoot
外网访问内网SpringBoot 本地安装了SpringBoot,只能在局域网内访问,怎样从外网也能访问本地SpringBoot? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装Java 1 ...
- 外网访问内网Elasticsearch WEB
外网访问内网Elasticsearch WEB 本地安装了Elasticsearch,只能在局域网内访问其WEB,怎样从外网也能访问本地Elasticsearch? 本文将介绍具体的实现步骤. 1. ...
- 怎样从外网访问内网Rails
外网访问内网Rails 本地安装了Rails,只能在局域网内访问,怎样从外网也能访问本地Rails? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Rails 默认安装的Rails端口 ...
- 怎样从外网访问内网Memcached数据库
外网访问内网Memcached数据库 本地安装了Memcached数据库,只能在局域网内访问,怎样从外网也能访问本地Memcached数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装 ...
- 怎样从外网访问内网CouchDB数据库
外网访问内网CouchDB数据库 本地安装了CouchDB数据库,只能在局域网内访问,怎样从外网也能访问本地CouchDB数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Cou ...
- 怎样从外网访问内网DB2数据库
外网访问内网DB2数据库 本地安装了DB2数据库,只能在局域网内访问,怎样从外网也能访问本地DB2数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动DB2数据库 默认安装的DB2 ...
- 怎样从外网访问内网OpenLDAP数据库
外网访问内网OpenLDAP数据库 本地安装了OpenLDAP数据库,只能在局域网内访问,怎样从外网也能访问本地OpenLDAP数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动 ...
随机推荐
- [转]开源框架完美组合之Spring.NET + NHibernate + ASP.NET MVC + jQuery + easyUI 中英文双语言小型企业网站Demo
热衷于开源框架探索的我发现ASP.NET MVC与jQuery easyUI的组合很给力.由于原先一直受Ext JS框架的licence所苦恼,于是痛下决心寻找一个完全免费的js框架——easyUI. ...
- 《Linux命令行与shell脚本编程大全》第十二章 使用结构化命令
许多程序要就对shell脚本中的命令施加一些逻辑控制流程. 结构化命令允许你改变程序执行的顺序.不一定是依次进行的 12.1 使用if-then语句 如下格式: if command then ...
- Python 面向对象(五) 描述器
使用到了__get__,__set__,__delete__中的任何一种方法的类就是描述器 描述器的定义 一个类实现了__get__,__set__,__delete__中任意一个,这个类就是描述器. ...
- 结合提供者模式解析Jenkins源码国际化的实现
关键字:提供者模式,设计模式,github,gerrit,源码学习,jenkins,国际化,maven高级,maven插件 本篇文章的源码展示部分由于长度问题不会全部粘贴展示,或许只是直接提及,需要了 ...
- 状态压缩dp第一题
标签: ACM 题目: Farmer John has purchased a lush new rectangular pasture composed of M by N (1 ≤ M ≤ 12; ...
- debounce去弹跳
通过返回闭包,来共用timer定时器,通过定时器的清除和设置来实现每次触发后重新计时. /** * * @param fn {Function} 实际要执行的函数 * @param delay {Nu ...
- Java数据结构和算法(五)——队列
前面一篇博客我们讲解了并不像数组一样完全作为存储数据功能,而是作为构思算法的辅助工具的数据结构——栈,本篇博客我们介绍另外一个这样的工具——队列.栈是后进先出,而队列刚好相反,是先进先出. 1.队列的 ...
- <meta http-equiv="X-UA-Compatible" content="IE=edge">的作用
X-UA-Compatible是针对ie8新加的一个设置,对于ie8之外的浏览器是不识别的. X-UA-Compatible 是针对 IE8 版本的一个特殊文件头标记,用于为 IE8 指定不同的页面渲 ...
- 两天快速开发一个自己的微信小程序
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Songti SC" } p.p2 { margin: 0.0px 0. ...
- Python3实现简单可学习的手写体识别
0.目录 1.前言 2.通过pymssql与数据库的交互 3.通过pyqt与界面的交互 4.UI与数据库的交互 5.最后的main主函数 1.前言 版本:Python3.6.1 + PyQt5 + S ...