(特价书)程序设计语言原理(英文版·原书第12版)
基本信息

编辑推荐
程序设计语言原理(英文版·原书第12版)
Concepts of Programming Languages, Twelfth Edition
[美]罗伯特·W. 塞巴斯塔(Robert W. Sebesta) 著
内容简介
作译者
目录
1.1 学习程序设计语言原理的原因 2
1.2 程序设计领域 5
1.3 语言评估标准 7
1.4 影响语言设计的因素 17
1.5 程序设计语言的分类 20
1.6 语言设计中的权衡 21
1.7 实现方法 22
1.8 程序设计环境 29
小结·复习题·习题 30
第2章 主要程序设计语言发展简史 33
2.1 Zuse研制的Plankalkül语言 36
2.2 伪代码 37
2.3 IBM 704计算机和Fortran 40
2.4 函数式程序设计语言:Lisp 45
2.5 迈向成熟的第一步:ALGOL 60 50
2.6 计算机化的商业记录:COBOL 56
2.7 分时处理的开始:Basic 61
访谈:Alan Cooper—用户设计与语言设计 64
2.8 满足所有人的需求:PL/I 66
前言
本书第12版的目标、总体结构以及撰写方法与之前的11个版本相同。第一个目标是介绍现代程序设计语言的基本结构,并为读者提供对现有以及未来的程序设计语言进行严格评估的工具。第二个目标是为学习编译器设计做好准备,为此,本书深入讨论了程序设计语言的结构,展示了描述语法的形式化方法,并介绍了词法和语法分析方法。
与第11版相比,第12版有多个方面的变化。为了保持本书内容不落伍,几乎全部删除了对某些程序设计语言(尤其是Lua和Objective-C)的讨论,而有关较新的程序设计语言Swift的内容则被添加到若干章中。
此外,在第6章中新增了关于可选类型的一节。8.3.4节增加了一些内容以介绍Python中的迭代器。书中还做了一些小改动,以对一些讨论内容进行改正或澄清。具体变化如下:
第2章:增加2.16.4节,介绍Swift;增加2.16.5节,介绍Delphi;删除2.18.6节,不再关注Lua。
第5章:重写5.5.3节的若干段落,改正并澄清一些错误。
第6章:6.3.2节增加一段,介绍Swift对字符串的支持;6.4.2节增加一段,介绍Swift对枚举类型的支持;6.5.3节增加一段,介绍Swift对数组的支持;6.6.1节增加一段,介绍Swift对关联数组的支持;删除6.6.1节中的访谈;增加6.12节,介绍可选类型。
第8章:8.3.1.1节增加一个设计问题,并对其进行了简要讨论;8.3.4节增加几个段落,描述Python中的迭代器。
第9章:9.5.4节增加一段,介绍Swift参数。
第11章:删除11.4.2节,不再关注Objective-C的抽象数据类型。
第12章:删除12.4.5节,不再关注Objective-C;删除表12.1中Objective-C一列;在小结中增加一段,介绍反射。
本书总体框架
本书主要介绍程序设计语言的基本概念。为此,书中讨论了各种语言结构的设计问题,研究了一些常见语言在语言结构上的设计选择,并对设计备选方案进行了严格的比较。
对程序设计语言进行的任何细致研究都无法脱离一些相关的主题,包括描述程序设计语言语法和语义的形式化方法,第3章将介绍这些方法。此外,还必须考虑各种语言结构的实现技术,第4章将讨论词法和语法分析,第10章将介绍子程序链接的实现。本书还将讨论其他语言结构的实现技术。
章节概述
第1章从学习程序设计语言的基本原理开始,然后讨论用于评估程序设计语言和语言结构的标准,同时分析了影响语言设计的主要因素、语言设计中的权衡以及语言实现的基本方法。
第2章概述书中所讨论的语言的发展过程。虽然没有试图完整地描述任何一种语言,但是对每种语言的起源、目标和贡献都会进行讨论。这样的历史回顾是很有价值的,因为它为我们理解当代语言设计的实践和理论基础提供了必要的背景。这也推动了对语言设计与评估的进一步研究。因为本书的其余部分都不依赖于第2章,所以这一章可以独立于其他章节单独阅读。
第3章介绍用于描述程序设计语言的BNF范式的主要形式化方法,首先讨论用于描述语言的语法和静态语义的属性文法,然后探讨语义描述的难点,并对三种最常见的语义方法(操作语义、指称语义和公理语义)进行了简要介绍。
第4章介绍词法分析和语法分析。这一章主要面向那些在课程体系中不设置编译器设计课程的计算机科学院系。与第2章类似,这一章独立于除了第3章之外的所有部分,可以单独阅读。
第5~14章详细讨论程序设计语言中主要结构的设计问题。对于每一种语言结构,都讲述了几种示例语言的设计选择并对其进行了评估。具体来说,第5章介绍变量的一些特性,第6章介绍数据类型,第7章解释表达式和赋值语句,第8章介绍控制语句,第9和10章讨论子程序及其实现,第11章研究数据抽象机制,第12章深入讨论支持面向对象程序设计的语言特性(继承和动态方法绑定),第13章讨论并发程序单元,第14章讨论异常处理并简要介绍事件处理。
媒体评论
本书有两个主要目标:
·讲解现代程序设计语言的基本结构,并提供对现有以及未来的程序设计语言进行严格评估的工具。
·为学习编译器设计做好准备,介绍描述语法的形式化方法,以及词法和语法分析方法。
第12版对全书内容做了与时俱进的更新,主要包括:
·删除了相对过时的程序设计语言,例如Lua和Objective-C。
·有关新的程序设计语言Swift的内容被添加到若干章中。
·第6章新增了关于可选类型的一节,8.3.4节增加了一些内容以介绍Python中的迭代器。