图书介绍
程序设计语言 实践之路 第3版PDF|Epub|txt|kindle电子书版本网盘下载
![程序设计语言 实践之路 第3版](https://www.shukui.net/cover/77/30324382.jpg)
- (美)斯科特著 著
- 出版社: 北京:电子工业出版社
- ISBN:9787121170676
- 出版时间:2012
- 标注页数:847页
- 文件大小:119MB
- 文件页数:882页
- 主题词:程序语言-教材
PDF下载
下载说明
程序设计语言 实践之路 第3版PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
第1部分 基础3
第1章 引言5
1.1语言设计的艺术7
1.2程序设计语言的谱系10
1.3为什么要研究程序设计语言?14
1.4编译和解释16
1.5程序设计环境24
1.6编译概览25
1.6.1词法和语法分析27
1.6.2语义分析和中间代码生成29
1.6.3目标代码生成33
1.6.4代码改进33
1.7总结和注记35
1.8练习36
1.9探索37
1.10有关参考文献39
第2章 程序设计语言的语法41
2.1描述语法:正则表达式和上下文无关文法42
2.1.1单词和正则表达式43
2.1.2上下文无关文法46
2.1.3推导和语法分析树48
2.2扫描51
2.2.1生成一个有穷自动机55
2.2.2扫描器代码60
2.2.3表格驱动的扫描63
2.2.4词法错误63
2.2.5编译指示65
2.3语法分析67
2.3.1递归下降70
2.3.2表格驱动的自上而下语法分析76
2.3.3自下而上的语法分析87
2.3.4语法错误99
2.4理论基础100
2.4.1有穷自动机100
2.4.2下推自动机100
2.4.3文法和语言类100
2.5总结和注记101
2.6练习102
2.7探索108
2.8有关参考文献109
第3章 名字、作用域和约束111
3.1约束时间的概念112
3.2对象生存期和存储管理114
3.2.1静态分配115
3.2.2基于栈的分配117
3.2.3基于堆的分配118
3.2.4废料收集120
3.3作用域规则121
3.3.1静态作用域123
3.3.2嵌套子程序124
3.3.3声明的顺序127
3.3.4模块132
3.3.5模块类型和类136
3.3.6动态作用域139
3.4作用域的实现143
3.4.1符号表143
3.4.2关联表和中心引用表143
3.5作用域中名字的含义144
3.5.1别名144
3.5.2重载146
3.5.3多态性及相关概念148
3.6引用环境的约束151
3.6.1子程序闭包153
3.6.2一级值和非受限生存期154
3.6.3对象闭包157
3.7宏扩展159
3.8分别编译161
3.8.1 C的分别编译161
3.8.2包和自动头文件推理161
3.8.3模块分层结构161
3.9总结和注记162
3.10练习163
3.11探索171
3.12有关参考文献172
第4章 语义分析175
4.1语义分析器所扮演的角色176
4.2属性文法180
4.3属性求值182
4.4动作例程191
4.5属性的空间管理196
4.5.1自下而上求值196
4.5.2自上而下求值196
4.6语法树的标注197
4.7总结和注记204
4.8练习205
4.9探索209
4.10有关参考文献210
第5章 目标机体系结构213
5.1存储器层次结构213
5.2数据表示213
5.2.1整数算术213
5.2.2浮点数算术213
5.3指令集体系结构213
5.3.1寻址模式213
5.3.2条件和分支213
5.4体系结构和实现213
5.4.1微程序设计213
5.4.2微处理器213
5.4.3 RISC213
5.4.4多线程和多核213
5.4.5两个示例体系结构:x86和MIPS213
5.5为新型处理器做编译213
5.5.1保持流水线满213
5.5.2寄存器分配213
5.6总结和注记213
5.7练习213
5.8探索213
5.9有关参考文献213
第2部分 语言设计的核心问题217
第6章 控制流219
6.1表达式求值220
6.1.1优先级和结合性222
6.1.2赋值224
6.1.3初始化233
6.1.4表达式中的顺序问题235
6.1.5短路求值238
6.2结构化和非结构化的流程241
6.2.1 goto的结构化替代品242
6.2.2继续245
6.3顺序执行246
6.4选择247
6.4.1短路条件248
6.4.2 Case/Switch语句251
6.5迭代256
6.5.1枚举控制的循环256
6.5.2组合循环261
6.5.3迭代器262
6.5.4 Icon的生成器268
6.5.5逻辑控制的循环268
6.6递归270
6.6.1迭代和递归271
6.6.2应用序和正则序求值275
6.7非确定性277
6.8总结和注记278
6.9练习279
6.10探索285
6.11有关参考文献287
第7章 数据类型289
7.1类型系统290
7.1.1类型检查291
7.1.2多态性291
7.1.3“类型”的含义293
7.1.4类型的分类294
7.1.5正交性301
7.2类型检查303
7.2.1类型等价303
7.2.2类型相容性310
7.2.3类型推理314
7.2.4 ML类型系统316
7.3记录(结构)与变体(联合)317
7.3.1语法和运算318
7.3.2存储布局及其影响319
7.3.3 with语句323
7.3.4变体记录(联合)324
7.4数组325
7.4.1语法和操作326
7.4.2维数、上下界和分配330
7.4.3内存布局335
7.5字符串342
7.6集合344
7.7指针和递归类型345
7.7.1语法和操作346
7.7.2悬空引用356
7.7.3废料收集357
7.8表364
7.9文件和输入/输出367
7.9.1交互式I/O367
7.9.2基于文件的I/O367
7.9.3正文I/O367
7.10相等检测和赋值368
7.11总结和注记371
7.12练习373
7.13探索379
7.14有关参考文献380
第8章 子程序和控制抽象383
8.1回顾栈的布局384
8.2调用序列386
8.2.1区头向量389
8.2.2案例研究:在MIS上实现C,在x86上实现Pascal389
8.2.3寄存器窗口390
8.2.4内联展开391
8.3参数传递393
8.3.1参数模式394
8.3.2名字调用402
8.3.3特殊目的的参数403
8.3.4函数返回408
8.4泛型子程序和模块410
8.4.1不同的实现方法412
8.4.2泛型参数的约束条件414
8.4.3隐式实例化416
8.4.4 C++、Java和C#中的泛型417
8.5异常处理418
8.5.1异常的定义421
8.5.2异常的传播423
8.5.3异常的实现425
8.6协作程序428
8.6.1栈分配430
8.6.2转移432
8.6.3迭代器的实现433
8.6.4离散事件模拟433
8.7事件434
8.7.1顺序处理程序434
8.7.2基于线程的处理程序436
8.8总结和注记438
8.9练习439
8.10探索446
8.11有关参考文献447
第9章 数据抽象和面向对象449
9.1面向对象程序设计451
9.2封装和继承460
9.2.1模块460
9.2.2类463
9.2.3嵌套(内层类)465
9.2.4类型扩展466
9.2.5不使用继承扩展468
9.3初始化和终结处理469
9.3.1构造函数的选择470
9.3.2引用和值472
9.3.3执行顺序475
9.3.4废料收集477
9.4动态方法约束478
9.4.1虚方法和非虚方法480
9.4.2抽象类482
9.4.3成员查找482
9.4.4多态性486
9.4.5对象闭包489
9.5多重继承491
9.5.1语义歧义性491
9.5.2复本式继承491
9.5.3共享继承491
9.5.4混入式继承491
9.6重温面向对象的程序设计492
9.6.1 Smalltalk的对象模型493
9.7总结和注记494
9.8练习495
9.9探索498
9.10有关参考文献499
第3部分 其他程序设计模型503
第10章 函数式语言505
10.1历史渊源506
10.2函数式程序设计的概念507
10.3 Scheme回顾/简介509
10.3.1约束512
10.3.2表和数513
10.3.3相等检测和检索514
10.3.4控制流和赋值515
10.3.5程序作为表517
10.3.6一个扩展的实例:DFA模拟519
10.4重温求值顺序521
10.4.1严格求值和惰性求值523
10.4.2 I/O:流和单体525
10.5高阶函数530
10.6理论基础534
10.6.1 lambda演算534
10.6.2控制流534
10.6.3结构534
10.7函数式程序设计展望534
10.8总结和注记537
10.9练习538
10.10探索542
10.11有关参考文献543
第11章 逻辑式语言545
11.1逻辑式程序设计的概念546
11.2 Prolog547
11.2.1归结和合一549
11.2.2表550
11.2.3算术551
11.2.4搜索/执行顺序552
11.2.5一个较大的实例:九宫棋554
11.2.6命令式控制流557
11.3理论基础566
11.3.1子句形式566
11.3.2局限性566
11.3.3 Skolem566
11.4逻辑式程序设计的展望566
11.4.1没有覆盖的逻辑部分566
11.4.2执行顺序567
11.4.3否定和“闭世界”假设568
11.5总结和注记570
11.6练习571
11.7探索573
11.8有关参考文献573
第12章 并发575
12.1基础和动力576
12.1.1多线程程序的各种情况579
12.1.2多处理器体系结构581
12.2并发程序设计基础586
12.2.1通信和同步587
12.2.2语言和库588
12.2.3创建线程的语法589
12.2.4线程的实现598
12.3实现603
12.3.1忙等待同步604
12.3.2非阻塞算法607
12.3.3内存一致模型610
12.3.4调度器的实现613
12.3.5信号量617
12.4语言级机制619
12.4.1管程619
12.4.2条件临界区域624
12.4.3 Java中的同步626
12.4.4事务存储629
12.4.5隐式同步633
12.5消息传递637
12.5.1通信对方的命名637
12.5.2发送637
12.5.3接收637
12.5.4远程过程调用637
12.6 总结和注记638
12.7练习640
12.8探索645
12.9有关参考文献647
第13章 脚本语言649
13.1什么是脚本语言?650
13.1.1公共特性652
13.2问题领域655
13.2.1外壳(命令)语言655
13.2.2文字处理和报表生成663
13.2.3数学和统计667
13.2.4“粘结”语言和通用脚本668
13.2.5扩充语言676
13.3万维网脚本680
13.3.1 CGI脚本680
13.3.2嵌入式服务器端脚本681
13.3.3客户端脚本686
13.3.4 Java小程序686
13.3.5 XSLT689
13.4新特征691
13.4.1名字和作用域691
13.4.2串和模式匹配696
13.4.3数据类型704
13.4.4面向对象710
13.5总结和注记717
13.6练习718
13.7探索723
13.8有关参考文献724
第4部分 对实现的近距离考查727
第14章 构造可运行的程序729
14.1后端编译器结构729
14.1.1一种可行的多阶段组织730
14.1.2阶段和遍734
14.2中间形式734
14.2.1 Diana734
14.2.2 gcc中间形式734
14.2.3基于栈的中间形式736
14.3代码生成738
14.3.1一个属性文法实例738
14.3.2寄存器分配741
14.4地址空间组织744
14.5汇编746
14.5.1指令发射748
14.5.2为名字指定地址749
14.6连接750
14.6.1重定位和名字解析751
14.6.2类型检查751
14.7动态连接754
14.7.1与定位无关的代码754
14.7.2完全动态连接(惰性连接)754
14.8总结和注记755
14.9练习756
14.10探索758
14.11有关参考文献759
第15章 运行时程序管理761
15.1虚拟机764
15.1.1 Java虚拟机766
15.1.2公共语言基础架构775
15.2机器码的迟绑定784
15.2.1即时和动态编译785
15.2.2二进制翻译791
15.2.3二进制重写795
15.2.4移动代码和沙箱797
15.3审查/自反799
15.3.1自反799
15.3.2符号调试806
15.3.3性能分析809
15.4总结和注记811
15.5练习812
15.6探索815
15.7有关参考文献816
第16章 代码改进817
16.1代码改进的阶段817
16.2窥孔优化817
16.3基本块内的冗余删除817
16.3.1一直使用的实例817
16.3.2值编号817
16.4全局冗余删除和数据流分析817
16.4.1 SSA(静态单赋值)形式和全局值编号817
16.4.2全局公共子表达式删除817
16.5循环改进Ⅰ817
16.5.1循环不变量817
16.5.2归纳变量817
16.6指令调度817
16.7循环改进Ⅱ817
16.7.1循环展开和软件流水线817
16.7.2循环重排817
16.8寄存器分配817
16.9总结和注记817
16.10练习817
16.11探索817
16.12有关参考文献817
附录A 本书中提到的程序设计语言819
附录B 语言设计和语言实现831
附录C 编号示表835