图书介绍

程序设计语言原理 原书第5版【2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载】

程序设计语言原理 原书第5版
  • (美)Robert W.Sebesta著;张勤译 著
  • 出版社: 北京:机械工业出版社
  • ISBN:7111137558
  • 出版时间:2004
  • 标注页数:483页
  • 文件大小:32MB
  • 文件页数:503页
  • 主题词:程序语言-高等学校-教材

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

程序设计语言原理 原书第5版PDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

目 录1

出版者的话1

专家指导委员会1

译者序1

前言1

第1章基本概念1

1.1学习程序设计语言原理的缘由2

1.2程序设计领域3

1.2.1科学应用4

1.2.2商务应用4

1.2.3人工智能4

1.2.4系统程序设计4

1.2.5脚本语言5

1.2.6专用语言5

1.3语言评估标准5

1.3.1可读性6

1.3.2可写性10

1.3.3可靠性11

1.3.4代价12

1.4影响语言设计的因素13

1.4.1计算机体系结构13

1.4.2程序设计方法学14

1.5语言分类15

1.6语言设计中的权衡15

1.7实现方法16

1.7.1编译方法17

1.7.2单纯解释19

1.7.3混合实现系统20

1.8程序设计环境20

本章小结21

复习题21

练习题22

第2章主要程序设计语言的发展23

2.1.2语言概述25

2.1.1历史背景25

2.1 Zuse的Plankalkül语言25

2.2最小硬件的程序设计:伪代码26

2.2.1短代码26

2.2.2快速编码27

2.2.3 UNIVAC“编译”系统27

2.2.4相关的工作27

2.3 IBM704计算机和FORTRAN语言27

2.3.1历史背景27

2.3.3 FORTRAN Ⅰ概况28

2.3.2设计过程28

2.3.4 FORTRAN Ⅱ概况29

2.3.5 FORTRAN Ⅳ、FORTRAN 77和FORTRAN 9029

2.3.6评估30

2.4函数式程序设计:LISP语言31

2.4.1人工智能和表数据处理的开始31

2.4.2 LISP的设计过程32

2.4.3语言概述32

2.4.4评估33

2.4.5 LISP的两种后代语言34

2 4.6相关的语言35

2.5迈向成熟的第一步:ALGOL 6035

2.5.1历史背景35

2.5.2早期设计过程36

2.5.3 ALGOL58概况36

2.5.4 ALGOL58报告的接受36

2.5.6 ALGOL 60语言概述37

2.5.5 ALGOL60的设计过程37

2.5.7 ALGOL60的评估38

2.6商务记录的计算机化:COBOL39

2.6.1历史背景39

2.6.2 FLOW-MATIC语言39

2.6.3 COBOL的设计过程40

2.6.4评估40

2.7分时操作的开始:BASIC42

2.7.3评估43

2.7.2语言概述43

2.7.1设计过程43

2.8用途广泛的语言:PL/I44

2.8.1历史背景44

2.8.2设计过程45

2.8.3语言概述45

2.8.4评估46

2.9.1APL的起源与特征47

2.9.2 SNOBOL的起源与特征47

2.9两种早期的动态语言:APL和SNOBOL47

2.10数据抽象的开始:SIMULA 6748

2.10.1设计过程48

2.10.2语言概述48

2.1 1正交性语言的设计:ALGOL6848

2.1 1.1设计过程49

2.11.2语言概述49

2.11.3评估49

2.12.1为简单性而设计的语言:Pasca150

2.12 ALGOL系列语言的重要后代语言50

2.12.2可移植的系统语言:C51

2.12.3 ALGOL的其他后代语言53

2.13基于逻辑的程序设计:Prolog54

2.13.1设计过程54

2.13.2语言概述54

2.13.3评估55

2.14历史上最大规模的语言设计:Ada55

2.14.1历史背景55

2.14.2设计过程55

2.14.3语言概述57

2.14.4评估57

2.14.5 Ada 9558

2.15面向对象的程序设计:Smalltalk59

2.15.1设计过程59

2.15.2语言概述60

2.15.3评估60

2.16.1设计过程61

2.1 6结合命令式与面向对象的特性:C++61

2.16.2语言概述62

2.16.3评估62

2.16.4一种相关语言:Eiffel62

2.17万维网程序设计:Java63

2.17.1设计过程63

2.17.2语言概述63

2 17.3评估64

本章小结65

文献注释65

复习题66

练习题67

第3章描述语法和语义69

3.3.3语法图69

3.2描述语法的普遍问题70

3.3.1巴科斯-诺尔范式与上下文无关文法71

3.3描述语法的形式方法71

3.2.1语言识别器71

3.2.2语言生成器71

3.3.2扩展的BNF79

3.1介绍79

3.3.4文法与识别器80

3.4属性文法80

3.4.1静态语义81

3.4.2基本概念81

34.3属性文法定义81

3.4.5属性文法的例子82

3.4.4内在属性82

3.4.6计算属性值83

3.4.7评估83

3.5描述程序的意义:动态语义84

3.5.1操作语义84

3.5.2公理语义86

3.5.3指称语义93

本章小结96

复习题97

练习题97

文献注释97

第4章词法分析和语法分析101

4.1介绍102

4.2词法分析102

4.3语法分析问题105

4.3.1语法分析介绍105

4.3.3自底向上语法分析器106

4.3.4语法分析的复杂性106

4.3.2自顶向下语法分析器106

4.4递归下降语法分析107

4.4.1递归下降语法分析过程107

4.4.2 LL文法类109

4.5自底向上语法分析110

4.5.1自底向上语法分析器的语法分析问题110

4.5.2移进-归约算法112

4.5.3 LR语法分析器112

本章小结115

复习题116

练习题117

第5章名字、绑定、类型检测和作用域119

5.1介绍120

5.2名字120

5.2.1设计问题120

5.2.2名字形式120

5.2.3特殊字121

5.3.2地址122

5.3.1名字122

5.3变量122

5.3.3类型123

5.3.4值123

5.4绑定概念123

5.4.1属性-变量绑定124

5.4.2类型绑定124

5.4.3存储绑定与生存期126

5.5类型检测128

5.6强类型化129

5.7类型兼容性130

5.8作用域132

5.8.1静态作用域132

5.8.2块134

5.8.3静态作用域的评估134

5.8.4动态作用域136

5.8.5动态作用域的评估137

5.9作用域与生存期137

5.10引用环境138

5.11命名常量139

5.12变量初始化141

本章小结141

复习题142

练习题142

第6章数据类型147

6.1介绍148

6.2.1数值类型149

6.2基本数据类型149

6.2.2布尔类型150

6.2.3字符类型150

6.3字符串类型151

6.3.1设计问题151

6.3.2字符串及操作151

6.3.3串长度的选择152

6.3.5字符串类型的实现153

6.3.4评估153

6.4用户定义的序数类型154

6.4.1枚举类型154

6.4.2子范围类型155

6.4.3实现用户定义的序数类型156

6.5数组类型156

6.5.1设计问题157

6..5.2数组和下标157

6.5.3下标绑定和数组类别158

6.5.4数组中的下标数目159

6.5.6数组操作160

6.5.5数组初始化160

6.5.7片161

6.5.8评估162

6.5.9数组类型的实现162

6.6相关数组165

6.6.1结构和操作165

6.6.2实现相关数组166

6.7记录类型166

6.7.1记录的定义166

6.72对记录域的引用167

6.7.3记录操作168

6.7.4评估168

6.7.5记录类型的实现169

6 8联合类型169

6.8.1设计问题169

6.8.2自由联合169

6.8.3 Pascal联合类型169

6.8.4 Ada联合类型171

6.8.6联合类型的实现172

6.8.5评估172

6.9集合类型173

6.9.1 Pascal中的集合173

6.92评估173

6.9.3集合类型的实现174

6.10指针类型174

6.10 .1设计问题175

6.10.2指针操作175

6.10.4 Pascal语言中的指针176

6.10.3指针的一些问题176

6.10.5Ada中的指针177

6.10.6 C和C++中的指针177

6.10.7 FORTRAN 90中的指针178

6.10.8引用类型179

6.10.9评估179

6.10.10指针类型和引用类型的实现180

本章小结183

复习题184

文献注释184

练习题185

第7章 表达式与赋值语句187

7.1介绍188

7.2算术表达式188

7.2.1操作符求值顺序188

7.2.2操作数求值顺序192

7.3重载操作符193

7.4.1表达式中的强制转换195

7 4类型转换195

7.4 2显式类型转换196

7.4 3表达式中的错误196

7.5关系表达式和布尔表达式197

7.5.1关系表达式197

7.5.2布尔表达式197

7 6短路求值198

7.7赋值语句199

7.7.4复合赋值操作符200

7 7.3条件目标200

7.7.2多目标200

7.7.1简单赋值200

7.7.5一元赋值操作符201

7.7.6赋值作为表达式201

7.8混合模式赋值202

本章小结203

复习题203

练习题203

第8章语句层次的控制结构207

8.1介绍208

8.2复合语句208

8.3选择语句209

8.3.1双向选择语句209

8.3.2多向选择结构212

8.4循环语句217

8.4.1计数器控制的循环217

8.4.2逻辑控制的循环223

8.4.3用户定位的循环控制机制224

8.4.4基于数据结构的重复226

8.5无条件转移227

8.5.1无条件转移中的问题227

8 5.2标号形式228

8.6受保护命令228

8.7结论230

本章小结231

复习题231

练习题232

第9章子程序235

9.1介绍236

9.2子程序的基本原理236

9.2.1子程序的共同特征236

9.2.2基本定义236

9.2.3参数237

9.2.4过程与函数238

9.3子程序的设计问题239

9.4局部引用环境240

9.5参数传递方法241

9.5.1参数传递的语义模型241

9.5.2参数传递的实现模型242

9.5.3主要语言中的参数传递245

9.5.4参数类型检测246

9.5.5实现参数传递方法247

9.5.6多维数组作为参数248

9.5.8参数传递的例子251

9.5.7设计考虑251

9.6子程序名作为参数传递254

9.7重载子程序256

9.8通用子程序257

9.8.1Ada中的通用子程序257

9.8.2 C++中的通用函数258

9.9分别编译与独立编译260

9.1 1.1 FORTRAN COMMON块261

9.11访问非局部环境261

9.10.2返回值的类型261

9.10.1函数的副作用261

9.10函数的设计问题261

9.11.2外部声明和模块262

9.12用户定义的重载操作符263

9.13协同程序263

本章小结265

复习题265

练习题266

第10章实现子程序269

10.1调用与返回的一般语义270

10.2实现FORTRAN 77子程序270

10.3在类ALGOL语言中实现子程序272

10.3.1更复杂的活动记录272

10.3.2一个没有递归及非局部引用的例子273

10.3.3递归275

10.3.4实现非局部引用的机制275

10.4块285

10.5.1深访问286

10 5实现动态作用域286

10 5.2浅访问287

10.6子程序名参数的实现288

10.6.1静态链方法288

10.6.2显示288

10.6.3再次讨论引用环境的混乱288

本章小结290

文献注释290

复习题290

练习题291

第11章抽象数据类型293

1 1.1抽象的概念294

11.2封装294

11.3数据抽象的介绍295

11.3.1浮点数作为抽象数据类型295

11.3.2用户定义的抽象数据类型296

11.3.3一个例子296

11.51SIMULA 67中的类297

11.4设计问题297

11.5语言示例297

11.5.2 Ada中的抽象数据类型298

11.5.3 C++中的抽象数据类型301

11.6有参数的抽象数据类型305

11.6.1Ada305

11.6.2 C++305

本章小结306

练习题307

复习题307

第12章支持面向对象的程序设计309

12.1介绍310

12.2面向对象程序设计310

12.2.1介绍310

12.2.2继承310

12.2.3多态与动态绑定312

12.2.4面向对象语言的计算312

12.3.3实现继承与接口继承313

12.3.2子类是子类型吗313

12.3.1纯对象模型313

12.3面向对象语言的设计问题313

12.3.4类型检测与多态314

12.3.5单继承与多继承314

12.3.6对象的分配与解除分配315

12.3.7动态绑定与静态绑定315

12.4 Smalltalk概况315

12.4.1一般特征316

12.4.2 Smalltalk环境316

12.5 Smalltalk语言介绍316

12.5.1表达式316

12.5.2方法318

12.5.3赋值语句319

12.5.4块与控制结构320

12.5.5类322

12.5.6方法的更多方面323

12.6.1简单表格处理324

12.6 Smalltalk程序示例324

12.6.2 LOGO风格的图形325

12.7 Smalltalk的轮廓特性329

12.7.1类型检测与多态329

12.7.2继承329

12.8 Smalltalk的评估329

12.9 C++对面向对象程序设计的支持330

12.9.1一般特征330

12.9.2继承330

12.9.3动态绑定333

12.9.4评估334

12.10 Java对面向对象程序设计的支持335

12.10.1一般特征335

12.10.2继承336

12.10.3动态绑定336

12.10.4封装336

12.11.1一般特征337

12.1 1 Ada 95对面向对象程序设计的支持337

12.10.5评估337

12.11 2继承338

12.11.3动态绑定338

12.11.4评估339

12.12 Eiffel对面向对象程序设计的支持339

12.12.1一般特征340

12.12.2继承340

12.13 JavaScript的对象模型341

12.13.1一般特征341

12 12.4评估341

12.12.3动态绑定341

12.13.2 JavaScript对象342

12.13.3对象的创建与修改342

12.13.4评估343

12.14面向对象结构的实现343

12.14.1存储实例数据343

12.14.2消息对方法的动态绑定344

复习题345

本章小结345

练习题346

第13章并发349

13.1介绍350

13.1.1多处理器体系结构350

13.1 .2并发的种类351

1 3.1.3学习并发的动机351

13.2子程序层次并发的介绍351

13.2.1基本概念351

13.2 2为并发而设计的语言353

13.2.3设计问题354

13.3信号量354

13.3.1介绍354

13.3.2合作同步354

13.3.3竞争同步356

13.4管程357

13.4.1介绍357

13.3.4评估357

13.4.2竞争同步358

13.4.3合作同步358

13.4.4评估361

13.5消息传递361

13.5.1介绍361

13.5.2同步消息传递的概念361

13.5.3 Ada 83的消息传递模型361

13.5.5竞争同步365

13.5.4合作同步365

13.5.6任务的终止367

13.5.7优先级367

13.5.8二元信号量367

13.5.9评估368

13.6 Ada 95中的并发368

13.6.1保护的对象368

13.6.2异步消息369

13.7.1 Thread类370

13.7.2优先级370

13.7 Java线程370

13.7.3竞争同步371

13.7.4合作同步371

13.7.5评估373

13.8语句层次的并发373

本章小结375

文献注释376

复习题376

练习题376

第14章异常处理379

14.1异常处理介绍380

14.1.1基本概念380

14.1.2设计问题381

14.1.3历史383

14.2.2异常与异常处理程序的绑定384

14.2.3继续384

14.2.4其他设计选择384

14.2.1异常处理程序384

14.2 PL/I中的异常处理384

14.2.5示例385

14.2.6评估386

14.3 Ada中的异常处理387

14.3.1异常处理程序387

14.3.2异常与异常处理程序的绑定387

14.3.3继续388

14.3.4其他设计选择389

14.3.5示例390

14.3.6评估391

14.4 C++中的异常处理391

14.4 1异常处理程序391

14.4.2异常与异常处理程序的绑定391

14.4.3继续392

14.4.4其他设计选择392

14.4.5示例393

14.4.6评估393

14.5.3异常与异常处理程序的绑定394

14.5.2异常处理程序394

14.5.1异常类394

14.5 Java中的异常处理394

14.5.4继续395

14.5.5其他设计选择396

14.5.6示例396

14.5.7 final1y子句397

14.5.8评估398

文献注释399

复习题399

本章小结399

练习题400

第15章函数式程序设计语言403

15.1介绍404

15.2数学函数404

15.2.1简单函数404

15.2.2函数形式405

15.3函数式程序设计语言的基础406

15.4第一种函数式程序设计语言:LISP406

15.4.2第一个LISP解释器407

15.4.1数据类型和结构407

15.5 Scheme介绍408

15.5.1 Scheme的起源409

15.5.2原始函数409

15.5.3构造函数的函数410

15.5.4谓词函数412

15.5.5控制流程414

15.5.6 Scheme示例函数415

15.5.7函数形式418

15.5.9 Scheme的命令式特性419

15.5.8产生代码的函数419

15.6 COMMON LISP420

15.7 ML422

1 5.8Haskell423

15.9函数式语言的应用425

15.10函数式语言和命令式语言的比较426

本章小结426

练习题427

义献注释427

复习题427

第16章逻辑程序设计语言429

16.1介绍430

16.2谓词演算的简短介绍430

16.2.1命题430

16.2.2 子句形式431

16.3谓词演算与定理证明432

16.4逻辑程序设计概述434

16.5 Prolog的起源435

16.6 Prolog的基本元素435

16.6.1项435

16.6.2事实语句435

16.6.3规则语句436

16.6.4 目标语句437

16.6.5 Prolog的推理过程437

16.6.6简单算术439

16.6.7链表结构441

16.7.1归结次序控制444

16.7 Prolog的缺陷444

16.7.2封闭世界假设446

16.7.3否定问题446

16.7.4内在的限制448

16.8逻辑程序设计的应用448

16.8.1关系数据库管理系统448

16.8.2专家系统448

16.9结论449

16.8.3自然语言处理449

16.8.4教育449

本章小结450

文献注释450

复习题450

练习题451

参考文献453

索引465

热门推荐