图书介绍

程序设计语言 实践之路 第3版PDF|Epub|txt|kindle电子书版本网盘下载

程序设计语言 实践之路 第3版
  • (美)斯科特著 著
  • 出版社: 北京:电子工业出版社
  • ISBN:9787121170676
  • 出版时间:2012
  • 标注页数:847页
  • 文件大小:119MB
  • 文件页数:882页
  • 主题词:程序语言-教材

PDF下载


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

下载说明

程序设计语言 实践之路 第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

热门推荐