图书介绍
编程语言原理 第10版PDF|Epub|txt|kindle电子书版本网盘下载
- (美)塞巴斯塔著 著
- 出版社: 北京:清华大学出版社
- ISBN:9787302311126
- 出版时间:2013
- 标注页数:633页
- 文件大小:178MB
- 文件页数:652页
- 主题词:程序语言
PDF下载
下载说明
编程语言原理 第10版PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
第1章 预备知识1
1.1学习程序设计语言原理的原因2
1.2程序设计领域4
1.2.1科学应用4
1.2.2商务应用4
1.2.3人工智能5
1.2.4系统程序设计5
1.2.5网络软件5
1.3语言评价标准6
1.3.1可读性6
1.3.2可写性10
1.3.3可靠性11
1.3.4成本13
1.4影响语言设计的因素14
1.4.1计算机体系结构14
1.4.2程序设计方法学15
1.5程序设计语言的分类16
1.6语言设计中的权衡17
1.7实现方法18
1.7.1编译19
1.7.2完全解释21
1.7.3混合实现系统22
1.7.4预处理器23
1.8编程环境23
第2章 主要程序设计语言的发展27
2.1 Zuse的Plankalkul语言29
2.1.1历史背景29
2.1.2语言概述29
2.2伪代码30
2.2.1 Short Code语言31
2.2.2 Speedcoding系统31
2.2.3 UNIVAC“编译”系统32
2.2.4相关工作32
2.3 IBM 704计算机与Fortran语言32
2.3.1历史背景32
2.3.2设计过程33
2.3.3 Fortran Ⅰ概述33
2.3.4 Fortran Ⅱ34
2.3.5 Fortran Ⅳ、77、90、95、2003和200834
2.3.6评价35
2.4函数式程序设计:LISP语言36
2.4.1人工智能的起源和表处理36
2.4.2 LISP语言的设计过程37
2.4.3语言概述37
2.4.4评价39
2.4.5 LISP的两种后代语言39
2.4.6相关语言40
2.5迈向成熟的第一步:ALGOL 6041
2.5.1历史背景41
2.5.2早期设计过程41
2.5.3 ALGOL 58概述42
2.5.4对ALGOL 58报告的响应42
2.5.5 ALGOL 60的设计过程43
2.5.6 ALGOL 60概述43
2.5.7评价44
2.6商务记录的计算机化:COBOL语言45
2.6.1历史背景46
2.6.2 FLOW-MATIC语言46
2.6.3 COBOL语言的设计过程46
2.6.4评价47
2.7分时处理的开始:BASIC语言49
2.7.1设计过程49
2.7.2语言概述50
2.7.3评价50
2.8满足所有人的需要:PL/I51
2.8.1历史背景51
2.8.2设计过程52
2.8.3语言概述53
2.8.4评价53
2.9两种早期的动态语言:APL和SNOBOL54
2.9.1 APL语言的起源与特点54
2.9.2 SNOBOL语言的起源与特点55
2.10数据抽象的开始:SIMULA 6755
2.10.1设计过程55
2.10.2语言概述55
2.11正交设计:ALGOL 6856
2.11.1设计过程56
2.11.2语言概述56
2.11.3评价56
2.12 ALGOL系列语言的早期后代语言57
2.12.1为简单性而设计:Pascal语言57
2.12.2可移植的系统语言:C语言59
2.13基于逻辑的程序设计:Prolog语言60
2.13.1设计过程61
2.13.2语言概述61
2.13.3评价61
2.14历史上规模最大的设计工作:Ada语言62
2.14.1历史背景62
2.14.2设计过程62
2.14.3语言概述63
2.14.4评价64
2.14.5 Ada 95和Ada 200565
2.15 面向对象的程序设计:Smalltalk65
2.15.1设计过程65
2.15.2语言概述66
2.15.3评价67
2.16结合命令式和面向对象的特性:C+++67
2.16.1设计过程68
2.16.2语言概述68
2.16.3评价69
2.16.4一种相关语言:Objective-C69
2.16.5另一种相关语言:Delphi69
2.16.6一种关系不大的语言:Go70
2.17基于命令式的面向对象语言:Java70
2.17.1设计过程70
2.17.2语言概述71
2.17.3评价72
2.18脚本语言73
2.18.1 Perl的起源与特点73
2.18.2 JavaScript的起源与特点75
2.18.3 PHP的起源与特点76
2.18.4 Python的起源与特点77
2.18.5 Ruby的起源与特点77
2.18.6 Lua的起源与特点78
2.19一流的.NET语言:C79
2.19.1设计过程79
2.19.2语言概述79
2.19.3评价80
2.20标记与程序设计混合的语言81
2.20.1 XSLT81
2.20.2 JSP82
第3章 描述语法和语义89
3.1概述90
3.2描述语法的普遍问题91
3.2.1语言识别器91
3.2.2语言生成器92
3.3描述语法的形式化方法92
3.3.1巴科斯-诺尔范式和上下文无关文法92
3.3.2扩展的BNF102
3.3.3文法与识别器104
3.4属性文法104
3.4.1静态语义105
3.4.2基本概念105
3.4.3属性文法定义105
3.4.4本质属性106
3.4.5属性文法的例子106
3.4.6计算属性值108
3.4.7评价109
3.5描述程序的意义:动态语义109
3.5.1操作语义110
3.5.2指称语义112
3.5.3公理语义116
第4章 词法分析和语法分析133
4.1概述134
4.2词法分析135
4.3语法分析问题142
4.3.1语法分析概述142
4.3.2自顶向下的语法分析器142
4.3.3自底向上的语法分析器143
4.3.4语法分析的复杂度144
4.4递归下降的语法分析144
4.4.1递归下降的语法分析过程144
4.4.2 LL文法类149
4.5自下而上的语法分析152
4.5.1自下而上的语法分析器的分析问题152
4.5.2移进-归约算法154
4.5.3 LR语法分析器155
第5章 名字、绑定和作用域163
5.1概述164
5.2名字164
5.2.1设计问题165
5.2.2名字形式165
5.2.3特殊字166
5.3变量166
5.3.1名字167
5.3.2地址167
5.3.3类型168
5.3.4数值168
5.4绑定的概念168
5.4.1属性与变量绑定169
5.4.2绑定类型169
5.4.3存储绑定和生存期172
5.5作用域175
5.5.1静态作用域175
5.5.2块177
5.5.3声明的次序179
5.5.4全局作用域180
5.5.5静态作用域的评价182
5.5.6动态作用域183
5.5.7动态作用域的评价183
5.6作用域和生存期184
5.7引用环境185
5.8命名常量186
第6章 数据类型195
6.1概述196
6.2基本数据类型197
6.2.1数值类型197
6.2.2布尔类型200
6.2.3字符类型200
6.3字符串类型200
6.3.1设计问题201
6.3.2字符串及其操作201
6.3.3字符串长度的设计选项203
6.3.4评价203
6.3.5字符串类型的实现203
6.4用户定义的序数类型204
6.4.1枚举类型205
6.4.2子界类型207
6.4.3实现用户定义的有序类型208
6.5数组类型208
6.5.1设计问题208
6.5.2数组和索引209
6.5.3下标的绑定和数组的种类210
6.5.4数组的初始化212
6.5.5数组操作213
6.5.6矩形数组和不规则数组215
6.5.7切片215
6.5.8评价216
6.5.9数组类型的实现216
6.6关联数组218
6.6.1结构和操作219
6.6.2关联数组的实现220
6.7记录类型220
6.7.1记录的定义221
6.7.2记录域的引用222
6.7.3评价222
6.7.4记录类型的实现223
6.8元组类型223
6.9列表类型224
6.10联合类型227
6.10.1设计问题227
6.10.2判别式联合与自由联合227
6.10.3 Ada的联合类型228
6.10.4 F#的联合类型229
6.10.5评价230
6.10.6联合类型的实现230
6.11指针和引用类型231
6.11.1设计问题232
6.11.2指针操作232
6.11.3指针的相关问题233
6.11.4 Ada中的指针234
6.11.5 C和C++中的指针235
6.11.6引用类型236
6.11.7评价237
6.11.8指针和引用类型的实现237
6.12类型检查242
6.13强类型化242
6.14类型等价243
6.15 理论和数据类型246
第7章 表达式与赋值语句257
7.1概述258
7.2算术表达式258
7.2.1运算符的运算顺序259
7.2.2操作数的运算顺序264
7.3运算符重载266
7.4类型转换267
7.4.1表达式中的强制类型转换267
7.4.2显式类型转换269
7.4.3表达式中的错误269
7.5关系表达式和布尔表达式270
7.5.1关系表达式270
7.5.2布尔表达式270
7.6短路求值271
7.7赋值语句273
7.7.1简单赋值273
7.7.2条件赋值273
7.7.3混合赋值运算符273
7.7.4一元赋值运算符274
7.7.5赋值表达式275
7.7.6多重赋值276
7.7.7函数式编程语言中的赋值276
7.8混合模式赋值277
第8章 语句级控制结构283
8.1概述284
8.2选择语句285
8.2.1双路选择语句285
8.2.2多重选择结构289
8.3迭代语句295
8.3.1计数控制循环296
8.3.2逻辑控制循环300
8.3.3用户自定义的循环控制机制302
8.3.4基于数据结构的迭代303
8.4无条件分支306
8.5防护命令307
8.6结论309
第9章 子程序315
9.1概述316
9.2子程序的基本原理316
9.2.1子程序的一般性质316
9.2.2子程序的基本定义316
9.2.3参数318
9.2.4过程与函数321
9.3子程序的设计问题322
9.4局部引用环境323
9.4.1局部变量323
9.4.2嵌套子程序324
9.5参数传递方式325
9.5.1参数传递的语义模型325
9.5.2参数传递的实现模型326
9.5.3参数传递方法的实现329
9.5.4常见语言的参数传递方法330
9.5.5参数的类型检查332
9.5.6多维数组作为参数333
9.5.7设计考虑336
9.5.8参数传递的例子336
9.6子程序作为参数339
9.7间接调用子程序340
9.8重载子程序342
9.9泛型子程序343
9.9.1 C++中的泛型函数343
9.9.2 Java 5.0中的泛型方法345
9.9.3 C# 2005中的泛型方法346
9.9.4 F#中的泛型函数347
9.10函数的设计问题348
9.10.1函数的副作用348
9.10.2返回值的类型348
9.10.3返回值的个数348
9.11用户定义重载运算符349
9.12闭包349
9.13协同程序351
第10章 实现子程序359
10.1调用和返回的一般语义360
10.2实现“简单”的子程序360
10.3通过栈动态局部变量实现子程序362
10.3.1更复杂的活动记录363
10.3.2一个不含递归调用的例子365
10.3.3递归调用367
10.4嵌套子程序368
10.4.1基础知识368
10.4.2静态链369
10.5块373
10.6动态作用域的实现375
10.6.1深层访问375
10.6.2浅层访问376
第11章 抽象数据类型与封装结构383
11.1抽象的概念384
11.2数据抽象简介385
11.2.1抽象数据类型之浮点型385
11.2.2用户自定义的抽象数据类型386
11.2.3示例387
11.3抽象数据类型的设计问题387
11.4语言示例388
11.4.1 Ada中的抽象数据类型388
11.4.2 C++中的抽象数据类型391
11.4.3 Objective-C中的抽象数据类型395
11.4.4 Java中的抽象数据类型400
11.4.5 C#中的抽象数据类型401
11.4.6 Ruby中的抽象数据类型403
11.5参数化的抽象数据类型406
11.5.1 Ada406
11.5.2 C++407
11.5.3 Java 5.0409
11.5.4 C# 2005411
11.6封装结构411
11.6.1引言411
11.6.2 C中的封装412
11.6.3 C++中的封装412
11.6.4 Ada包413
11.6.5 C#程序集413
11.7命名封装414
11.7.1 C++命名空间414
11.7.2 Java包415
11.7.3 Ada包416
11.7.4 Ruby模块417
第12章 面向对象程序设计的支持425
12.1概述426
12.2面向对象编程426
12.2.1引言426
12.2.2继承426
12.2.3动态绑定428
12.3面向对象语言的设计问题430
12.3.1对象的排他性430
12.3.2子类是子类型吗430
12.3.3单继承与多继承431
12.3.4对象的分配和释放432
12.3.5动态绑定与静态绑定433
12.3.6嵌套类433
12.3.7对象的初始化433
12.4 Smalltalk对面向对象编程的支持434
12.4.1一般特征434
12.4.2继承434
12.4.3动态绑定435
12.4.4 Smalltalk的评价435
12.5 C++对面向对象编程的支持436
12.5.1一般特征436
12.5.2继承436
12.5.3动态绑定441
12.5.4评价443
12.6 Objective-C对面向对象编程的支持444
12.6.1一般特征444
12.6.2继承445
12.6.3动态绑定446
12.6.4评价447
12.7 Java对面向对象编程的支持447
12.7.1一般特征447
12.7.2继承447
12.7.3动态绑定449
12.7.4被嵌套的类449
12.7.5评价450
12.8 C#对面向对象编程的支持450
12.8.1一般特征450
12.8.2继承450
12.8.3动态绑定450
12.8.4被嵌套的类451
12.8.5评价451
12.9 Ada 95对面向对象编程的支持452
12.9.1一般特征452
12.9.2继承452
12.9.3动态绑定453
12.9.4子包454
12.9.5评价455
12.10 Ruby对面向对象编程的支持455
12.10.1一般特征455
12.10.2继承457
12.10.3动态绑定457
12.10.4评价457
12.11面向对象构造的实现457
12.11.1存储实例数据457
12.11.2方法调用到方法的动态绑定458
第13章 并发467
13.1概述468
13.1.1多处理器体系结构469
13.1.2并发的种类470
13.1.3使用并发的目的471
13.2子程序级并发概述471
13.2.1基本概念471
13.2.2为并发而设计的语言475
13.2.3设计问题475
13.3信号量475
13.3.1概述475
13.3.2合作同步476
13.3.3竞争同步478
13.3.4评价479
13.4管程479
13.4.1概述479
13.4.2竞争同步480
13.4.3合作同步480
13.4.4评价480
13.5消息传递481
13.5.1概述481
13.5.2同步消息传递的原理481
13.6 Ada对并发的支持482
13.6.1基本原理482
13.6.2合作同步485
13.6.3竞争同步486
13.6.4任务终止487
13.6.5优先级487
13.6.6受保护对象488
13.6.7评价489
13.7 Java线程489
13.7.1 Thread类490
13.7.2优先级491
13.7.3信号量492
13.7.4竞争同步492
13.7.5合作同步493
13.7.6非阻塞同步496
13.7.7显式锁定496
13.7.8评价497
13.8 C#线程497
13.8.1基本线程操作497
13.8.2同步线程500
13.8.3评价500
13.9函数式语言中的并发501
13.9.1 Multilisp501
13.9.2并发ML501
13.9.3 F502
13.10语句级并发503
第14章 异常处理和事件处理511
14.1异常处理概述512
14.1.1基本概念513
14.1.2设计问题514
14.2 Ada中的异常处理517
14.2.1异常处理程序517
14.2.2将异常绑定到处理程序518
14.2.3继续518
14.2.4其他设计选择519
14.2.5例子520
14.2.6评价522
14.3 C++中的异常处理522
14.3.1异常处理程序522
14.3.2异常与处理程序的绑定523
14.3.3继续524
14.3.4其他设计选择524
14.3.5例子524
14.3.6评价526
14.4 Java中的异常处理526
14.4.1异常类526
14.4.2异常处理程序527
14.4.3异常与处理程序的绑定527
14.4.4其他设计选择528
14.4.5例子529
14.4.6 finally子句530
14.4.7断言531
14.4.8评价531
14.5事件处理概述532
14.6 Java的事件处理533
14.6.1 Java Swing的GUI组件533
14.6.2 Java事件模型534
14.7 C#中的事件处理537
第15章 函数式程序设计语言545
15.1概述546
15.2数学函数547
15.2.1简单函数547
15.2.2函数形式548
15.3函数式程序设计语言基础549
15.4第一种函数式程序设计语言LISP550
15.4.1数据类型和结构550
15.4.2第一个LISP解释器551
15.5 Scheme概述553
15.5.1 Scheme的起源553
15.5.2 Scheme解释器553
15.5.3基本数值函数553
15.5.4定义函数554
15.5.5输出函数556
15.5.6数值谓词函数556
15.5.7控制流557
15.5.8表函数557
15.5.9用于符号原子和表的谓词函数560
15.5.10 Scheme函数示例561
15.5.11 LET564
15.5.12 Scheme中的尾递归565
15.5.13函数形式566
15.5.14构建代码的函数567
15.6 Common LISP568
15.7 ML570
15.8 Haskell574
15.9 F578
15.10基本命令式语言对函数式编程的支持581
15.11函数式语言和命令式语言的比较582
第16章 逻辑程序设计语言589
16.1概述590
16.2谓词演算简介590
16.2.1命题591
16.2.2子句形式592
16.3谓词演算与定理证明593
16.4逻辑程序设计概述595
16.5 Prolog的起源596
16.6 Prolog的基本元素597
16.6.1项597
16.6.2事实语句598
16.6.3规则语句598
16.6.4目标语句599
16.6.5 Prolog的推理过程600
16.6.6简单算术602
16.6.7表结构604
16.7 Prolog存在的缺陷609
16.7.1归结的顺序控制609
16.7.2封闭世界假设610
16.7.3否定问题611
16.7.4固有的限制612
16.8逻辑程序设计的应用613
16.8.1关系数据库管理系统613
16.8.2专家系统613
16.8.3自然语言处理614
参考文献617