第一章 程序设计语言的演化 1
1.1 早期的历史 2
1.2 早期现代史 4
1.3 FORTRAN和ALGOL 60 9
1.4 60年代的风暴 13
1.5 70年代的进展 22
本章中讨论的概念 29
练习 29
第二章 程序设计语言设计的挑战 31
2.1 语言设计的准则 33
2.2 某些可能的解决办法 38
本章中讨论的概念 42
练习 43
3.1 字符集 44
第三章 语法定义 44
3.2 BNF 49
3.3 语法图 54
3.4 语法和程序可靠性 63
本章中讨论的概念 68
练习 68
第四章 变量、表达式和语句 72
4.1 变量和赋值语句 72
4.2 建约时间和存储分配 77
4.3 常量与初置 81
4.4 表达式 83
4.5 条件语句 87
4.6 重复语言 91
4.7 GOTO语句和标号 97
4.8 Ada一瞥 100
本章中讨论的概念 103
练习 104
第五章 类型 111
5.1 数据类型和划类(类型划分) 111
5.2 枚举数据类型 113
5.3 基本数据类型 115
5.4 指针数据类型 127
5.5 结构数据类型 131
5.6 类型强制 144
5.7 类型等价 146
5.8 Ada的类型 150
本章中讨论的概念 154
练习 155
第六章 作用域与存在期 158
6.1 基本问题 158
6.2 运行实现 169
6.3 一个完整的例子 176
6.4 约束、作用域和存在期的结合 180
6.5 Ada及其作用域 184
本章中讨论的概念 189
练习 189
第七章 过程 192
7.1 一般特征 192
7.2 参数的求值与传递 195
7.3 换名调用 197
7.4 过程中对象的刻画 200
7.5 别名 205
7.6 复载 207
7.7 产生性过程 211
7.8 协作程序(协程) 214
本章中讨论的概念 219
练习 220
第八章 数据抽象 225
8.1 引言 225
8.2 MODULA 229
8.3 Euclid 235
8.4 Ada 240
8.5 SIMULA67 246
8.6 抽象数据类型 252
本章中讨论的概念 257
练习 258
第九章 异常处置 260
9.1 问题的出发点 260
9.2 PL/1语言中的ON条件 263
9.3 CLU中的异常处置 269
9.4 MESA中的异常处置 272
9.5 Ada中的异常处置 274
本章中讨论的概念 280
练习 281
第十章 并行性 283
10.1 基本概念 283
10.2 信号量 287
10.3 管程 291
10.4 消息传递 299
10.5 Ada中的并行性 304
本章中讨论的概念 317
练习 318
第十一章 输入-输出 322
本章中讨论的概念 337
练习 337
12.1 函数式程序设计 339
第十二章 函数式程序设计语言 339
12.2 LISP基础 342
12.3 L1SP解释器 352
12.4 FUNARG 359
12.5 PROG特征 362
12.6 拖延求值 366
本章中讨论的概念 369
练习 369
第十三章 数据流程序设计语言 372
13.1 数据流模型 372
13.2 语言设计目标 379
13.3 VAL——一个数据流程序设计语言 382
本章中讨论的概念 389
练习 389
14.1 历史 391
第十四章 面向对象的程序设计语言 391
14.2 把Smalltalk划分为程序设计语言和用户界面 392
14.3 Smalltalk:面向对象的程序设计语言 394
14.3.1 对象 394
14.3.2 消息 395
14.3.3 方法 398
14.3.4 类 399
14.3.5 控制结构 400
14.3.6 类与抽象数据类型的对比 402
14.3.7 继承性和子类 403
14.4 Smalltalk:面向对象的用户界面 407
14.5 设计原则 412
本章中讨论的概念 414
练习 414
参考文献 416
索引 432