第1章 基本概念 1
学习程序设计语言原理的缘由 1
程序设计应用领域 3
语言评估标准 4
影响语言设计的因素 13
语言分类 15
语言设计中的权衡 16
实现方法 17
程序设计环境 21
小结*复习题*练习题 22
第2章 主要程序设计语言的发展 24
Zuse的Plankalkül语言 24
最小硬件的程序设计:伪代码 26
IBM 704计算机与Fortran 28
函数式程序设计语言:LISP 32
迈向成熟的第一步:ALGOL60 36
商务记录计算机化:COBOL 40
分时操作的开始:BASIC 44
用途广泛的语言:PL/I 47
两种早期的动态语言:APL和SNOBOL 50
数据抽象的开始:SIMULA67 51
正交性语言的设计:ALGOL 68 52
早期ALGOL系列语言的后代产品 53
基于逻辑的程序设计:Prolog 58
历史上规模最大的语言设计:Ada 59
面向对象的程序设计:Smalltalk 62
结合命令式与面向对象的特性:C++ 64
一种基于命令式的面向对象语言:Java 66
脚本语言:JavaScript、 PHP、Python和Ruby 69
一种基于C的新世纪语言:C 72
标志与程序设计混合式语言 74
小结*文献注释*复习题*练习题*程序设计练习题 76
第3章 描述语法和语义 79
概述 79
描述语法的普遍问题 80
描述语法的形式方法 81
属性文法 91
描述程序的意义:动态语义 95
小结*文献注释*复习题*练习题 108
第4章 词法分析和语法分析 112
概述 112
词法分析 113
语法分析问题 117
递归下降语法分析 119
自底向上语法分析 126
小结*复习题*练习题*程序设计练习题 131
第5章 名字、绑定、类型检测和作用域 135
概述 135
名字 135
变量 137
绑定的概念 139
类型检测 146
强类型化 147
类型等价 148
作用域 151
作用域与生存期 157
引用环境 157
命名常量 159
小结*复习题*练习题*程序设计练习题 160
第6章 数据类型 166
概述 166
基本数据类型 167
字符串类型 169
用户定义的序数类型 173
数组类型 176
关联数组 186
记录类型 189
联合类型 192
指针类型与引用类型 195
小结*文献注释*复习题*练习题*程序设计练习题 204
第7章 表达式与赋值语句 208
概述 208
算术表达式 208
重载操作符 214
类型转换 216
关系表达式和布尔表达式 219
短路求值 221
赋值语句 222
混合模式赋值 225
小结*复习题*练习题*程序设计练习题 226
第8章 语句层次的控制结构 229
概述 229
选择语句 230
循环语句 238
无条件分支 248
守卫的命令 249
结论 252
小结*复习题*练习题*程序设计练习题 253
第9章 子程序 256
概述 256
子程序的基本原理 256
子程序的设计问题 262
局部引用环境 263
参数传递方法 265
子程序名作为参数 280
重载子程序 281
通用子程序 282
函数的设计问题 287
用户定义的重载操作符 288
协同程序 288
小结*复习题*练习题*程序设计练习题 290
第10章 实现子程序 294
调用与返回的一般语义 294
实现“简单”子程序 294
实现具有栈动态局部变量的子程序 296
嵌套子程序 300
块 305
实现动态作用域 306
小结*复习题*练习题 309
第11章 抽象数据类型和封装结构 313
抽象概念 313
数据抽象介绍 314
抽象数据类型的设计问题 315
语言示例 318
有参数的抽象数据类型 328
封装结构 331
命名封装 333
小结*复习题*练习题*程序设计练习题 336
第12章 支持面向对象的程序设计 339
概述 339
面向对象程序设计 339
面向对象语言的设计问题 341
Smalltalk对面向对象程序设计的支持 344
C++对面向对象程序设计的支持 346
Java对面向对象程序设计的支持 354
C#对面向对象程序设计的支持 357
Ada 95对面向对象程序设计的支持 358
Ruby对面向对象程序设计的支持 361
JavaScript的对象模型 364
面向对象结构的实现 366
小结*复习题*练习题*程序设计练习题 368
第13章 并发 372
概述 372
子程序层次并发的介绍 374
信号量 377
管程 380
消息传递 382
Ada对并发的支持 382
Java线程 391
C#线程 397
语句层次的并发 398
小结*文献注释*复习题*练习题*程序设计练习题 400
第14章 异常处理和事件处理 403
异常处理概述 403
Ada中的异常处理 407
C++中的异常处理 412
Java中的异常处理 416
事件处理概述 423
Java的事件处理 424
小结*文献注释*复习题*练习题*程序设计练习题 427
第15章 函数式程序设计语言 431
概述 431
数学函数 431
函数式程序设计语言的基础 433
第一种函数式程序设计语言:LISP 434
Scheme概述 436
COMMON LISP 448
ML 449
Haskell 451
函数式语言的应用 454
函数式语言和命令式语言的比较 455
小结*文献注释*复习题*练习题*程序设计练习题 456
第16章 逻辑程序设计语言 459
概述 459
谓词演算的简短介绍 459
谓词演算与定理证明 462
逻辑程序设计概述 463
Prolog的起源 464
Prolog的基本元素 465
Prolog的缺陷 475
逻辑程序设计的应用 480
小结*文献注释*复习题*练习题*程序设计练习题 481
参考文献 483
索引 493