𝔖 Scriptorium
✦   LIBER   ✦

📁

程序设计语言:实践之路 (第三版)

✍ Scribed by Michael L. Scott


Publisher
博文视点
Year
2012-7
Tongue
Chinese
Leaves
882
Edition
3
Category
Library

⬇  Acquire This Volume

No coin nor oath required. For personal study only.

✦ Synopsis


《程序设计语言:实践之路(第3版)》是一本很有特色的计算机教材,其核心是讨论程序设计语言的基本原理和技术。《程序设计语言:实践之路(第3版)》融合了传统的程序设计语言教科书和编译教科书的有关知识,并增加了一些有关汇编层体系结构的材料,以满足没学过计算机组织的学生们的需要。书中通过各种语言的例子,阐释了程序设计语言的重要基础概念,讨论了各种概念之间的关系,解释了语言中许多结构的形成和发展过程,以及它们演化为今天这种形式的根源。书中还详细讨论了编译器的工作方式和工作过程,说明它们对源程序做了什么,以及为什么要那样做。书的每章最后附有复习题和一些更具挑战性的练习与探索。这些练习的特别价值在于引导学生进一步深入理解各种语言和技术。《程序设计语言:实践之路(第3版)》第3版新增了关于运行时程序管理的讨论,对关于并发的一章做了重大的改写,并更新了大量的实例。

✦ Table of Contents


My Bookmarks
封面
书名
版权
前言
目录
第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 Icon的生成器
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.3.3 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案例研究:在MIS上实现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基于线程的处理程序
8.8总结和注记
8.9练习
8.10探索
8.11有关参考文献
第9章 数据抽象和面向对象
9.1面向对象程序设计
9.2封装和继承
9.2.1模块
9.2.2类
9.2.3嵌套(内层类)
9.2.4类型扩展
9.2.5不使用继承扩展
9.3初始化和终结处理
9.3.1构造函数的选择
9.3.2引用和值
9.3.3执行顺序
9.3.4废料收集
9.4动态方法约束
9.4.1虚方法和非虚方法
9.4.2抽象类
9.4.3成员查找
9.4.4多态性
9.4.5对象闭包
9.5多重继承
9.5.1语义歧义性
9.5.2复本式继承
9.5.3共享继承
9.5.4混入式继承
9.6重温面向对象的程序设计
9.6.1 Smalltalk的对象模型
9.7总结和注记
9.8练习
9.9探索
9.10有关参考文献
第3部分 其他程序设计模型
第10章 函数式语言
10.1历史渊源
10.2函数式程序设计的概念
10.3 Scheme回顾/简介
10.3.1约束
10.3.2表和数
10.3.3相等检测和检索
10.3.4控制流和赋值
10.3.5程序作为表
10.3.6一个扩展的实例:DFA模拟
10.4重温求值顺序
10.4.1严格求值和惰性求值
10.4.2 I/O:流和单体
10.5高阶函数
10.6理论基础
10.6.1 lambda演算
10.6.2控制流
10.6.3结构
10.7函数式程序设计展望
10.8总结和注记
10.9练习
10.10探索
10.11有关参考文献
第11章 逻辑式语言
11.1逻辑式程序设计的概念
11.2 Prolog
11.2.1归结和合一
11.2.2表
11.2.3算术
11.2.4搜索/执行顺序
11.2.5一个较大的实例:九宫棋
11.2.6命令式控制流
11.3理论基础
11.3.1子句形式
11.3.2局限性
11.3.3 Skolem
11.4逻辑式程序设计的展望
11.4.1没有覆盖的逻辑部分
11.4.2执行顺序
11.4.3否定和“闭世界”假设
11.5总结和注记
11.6练习
11.7探索
11.8有关参考文献
第12章 并发
12.1基础和动力
12.1.1多线程程序的各种情况
12.1.2多处理器体系结构
12.2并发程序设计基础
12.2.1通信和同步
12.2.2语言和库
12.2.3创建线程的语法
12.2.4线程的实现
12.3实现
12.3.1忙等待同步
12.3.2非阻塞算法
12.3.3内存一致模型
12.3.4调度器的实现
12.3.5信号量
12.4语言级机制
12.4.1管程
12.4.2条件临界区域
12.4.3 Java中的同步
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.9有关参考文献
第13章 脚本语言
13.1什么是脚本语言?
13.1.1公共特性
13.2问题领域
13.2.1外壳(命令)语言
13.2.2文字处理和报表生成
13.2.3数学和统计
13.2.4“粘结”语言和通用脚本
13.2.5扩充语言
13.3万维网脚本
13.3.1 CGI脚本
13.3.2嵌入式服务器端脚本
13.3.3客户端脚本
13.3.4 Java小程序
13.3.5 XSLT
13.4新特征
13.4.1名字和作用域
13.4.2串和模式匹配
13.4.3数据类型
13.4.4面向对象
13.5总结和注记
13.6练习
13.7探索
13.8有关参考文献
第4部分 对实现的近距离考查
第14章 构造可运行的程序
14.1后端编译器结构
14.1.1一种可行的多阶段组织
14.1.2阶段和遍
14.2中间形式
14.2.1 Diana
14.2.2 gcc中间形式
14.2.3基于栈的中间形式
14.3代码生成
14.3.1一个属性文法实例
14.3.2寄存器分配
14.4地址空间组织
14.5汇编
14.5.1指令发射
14.5.2为名字指定地址
14.6连接
14.6.1重定位和名字解析
14.6.2类型检查
14.7动态连接
14.7.1与定位无关的代码
14.7.2完全动态连接(惰性连接)
14.8总结和注记
14.9练习
14.10探索
14.11有关参考文献
第15章 运行时程序管理
15.1虚拟机
15.1.1 Java虚拟机
15.1.2公共语言基础架构
15.2机器码的迟绑定
15.2.1即时和动态编译
15.2.2二进制翻译
15.2.3二进制重写
15.2.4移动代码和沙箱
15.3审查/自反
15.3.1自反
15.3.2符号调试
15.3.3性能分析
15.4总结和注记
15.5练习
15.6探索
15.7有关参考文献
第16章 代码改进
16.1代码改进的阶段
16.2窥孔优化
16.3基本块内的冗余删除
16.3.1一直使用的实例
16.3.2值编号
16.4全局冗余删除和数据流分析
16.4.1 SSA(静态单赋值)形式和全局值编号
16.4.2全局公共子表达式删除
16.5循环改进Ⅰ
16.5.1循环不变量
16.5.2归纳变量
16.6指令调度
16.7循环改进Ⅱ
16.7.1循环展开和软件流水线
16.7.2循环重排
16.8寄存器分配
16.9总结和注记
16.10练习
16.11探索
16.12有关参考文献
附录A 本书中提到的程序设计语言
附录B 语言设计和语言实现
附录C 编号示表


📜 SIMILAR VOLUMES


程序设计实践
✍ Brian W. Kernighan; Rob Pike 📂 Library 📅 2000 🏛 机械工业出版社 🌐 Chinese

<p>这本书从排错、测试、性能、可移植性、设计、界面、风格和记法等方面,讨论了程序设计中实际的、又是非常深刻和具有广泛意义的思想、技术和方法。</p>

C语言程序设计与实践
✍ 廖小飞,李敏杰 📂 Library 📅 2015 🏛 电子工业出版社 🌐 Chinese

本书是依据高等学校计算机类和信息类各专业基础课程教学的要求与目标而编写的理论与实践相结合的教材。本书以C语言基本知识和基本概念为引领,将知识融入各个实例,通过实践来学习C语言程序设计,注重C语言基本概念、基本编程思想的介绍和应用,始终贯彻“教、学、做”相结合的原则,使学生掌握C语言程序设计方法,能够学以致用,培养学生使用C语言来解决实际问题的能力。全书共11章,主要内容包括:计算机程序设计概述,C语言基础,数据输入与输出,控制结构程序设计,数组和字符串,指针,函数,构造数据类型,编译预处理,文件,高质量编程规范。本书提供配套电子课件、程序代码和习题参考答案。

程序设计语言与编译—语言的设计与实现(第4版)
✍ 王晓斌 等编著 📂 Library 📅 2015 🏛 电子工业出版社 🌐 Chinese

本书是一本计算机专业的宽口径教材,新版覆盖 CCC2001 和 CCC20O2 教程中编程语言(LP)模块的全部知识点,内容涉及语言及其编译系统的设计要素,设计思想,设计方法,设计技术和设计风格等知识。全书分为上、下篇。上篇,程序设计语言的设计包括:绪论、数据类型、控制结构、程序语言设计;下篇,程序设计语言的实现(编译)包括:编译概述、词法分析、自上而下的语法分析、自下而上的语法分析、语义分析和中间代码生成、代码优化和目标代码生成、运行时存储空间的组织。

C程序设计语言: (第2版)
✍ Brian W. Kernighan; Dennis M. Ritchie 📂 Library 📅 2006 🏛 机械工业出版社 🌐 Chinese

<p>在计算机发展的历史上,没有哪一种程序设计语言像C语言这样应用广泛。本书是C语言的设计者之一Dennis M.Ritchie和著名计算机科学家Brian W.Kernighan合著的一本介绍C语言的权威经典著作。我们现在见到的大量论述C语言程序设计的教材和专著均以此书为蓝本。本书第1版中介绍的C语言成为后来广泛使用的C语言版本——标准C的基础。人们熟知的“hello,World"程序就是由本书首次引入的。现在,这一程序已经成为众多程序设计语言入门的第一课。</p> <p>第2版根据1987年制定的ANSIC标准做了适当的修订,引入了最新的语言形式,并增加了新的示例。通过简洁的描述、典型的

C语言程序设计(第2版)
✍ 耿姝 📂 Library 📅 2016 🏛 电子工业出版社 🌐 Chinese

本书从程序设计的实际能力培养出发,由浅入深、深入浅出,将理论与实践有机结合,集知识传播和能力培养为一体。本书内容丰富、注重实践;突出重点、分散难点;例题广泛、结合实际。本书的宗旨在于进一步巩固对基本知识的理解和掌握,提高学生的逻辑分析、抽象思维和程序设计能力,培养学生良好的程序设计风格,进而具备编写中、大型程序的能力。 本书中的程序在按照模块化程序设计思想进行编写的同时,每一个程序都遵循软件工程方法学的编程风格,即采用缩进格式,程序中附有注释,以便于对程序的分析、理解和自学。