Michael Scott的Programming Language Pragmatics是一本很有价值的教科书,其内容涵盖程序设计语言、编译技术、软件系统的许多方面,甚至延伸到硬件体系结构等许多领域。出现这一情况的根源很明显:程序语言在计算机科学技术领域居于一种中心地位。程序是计算机科学技术里最核心的概念,而作为描述程序的语言,集中体现了程序设计和软件开发实践中形成的最有价值、最具普遍性的认识和技术。程序语言下接硬件体系结构,上承丰富多彩的计算机应用需求,既反映了开发者的专业发展和局限性,又受到实现的制约。这样,程序语言里很自然地浓缩了相关领域的大量知识和技术精华,要理解语言发展和演化的现状和趋势,也必然涉及与之相关的众多领域。本书作者熟悉这些相关领域,因此能在其中纵横驰骋,为我们展现了一幅有关程序语言的生动、全面,而又非常深刻的画卷。
本书系统地介绍了程序语言领域的各种基本概念,介绍了语言处理方面的许多知识,不同的语言范型以及相关的理论和实践。在讨论各种语言特征时,特别仔细地考察了人们的评价和反思,阐释了各种特征的设计变化,以及理论和技术发展对语言形态和细节的影响。与此同时,本书还深入介绍了本领域的许多新发展、新问题和新技术。例如,作者用一章的篇幅深入探讨了面向对象语言的问题,不仅介绍了这类语言的外在形式特征及其价值,还特别仔细地讨论了这类语言中各种新的重要机制的实现技术,如动态方法约束、多重继承等等。用很长的一章深入讨论了并行性的历史和发展,以及与并行性有关的各种重要问题。第2版新增了有关脚本语言的一章,其中讨论了脚本语言的特点、应用和许多深入问题。书中还详细讨论了高级语言的加工过程,程序的静态连接和动态连接,以帮助读者理解这方面的情况。作者在书中既强调了重要的概念和理论,也特别重视各种特征的实现技术,并深入探讨了实现技术及其发展进步对程序语言设计的影响。应该看到,语言实现方面的许多技术都是最重要的程序技术,作者的这些想法也使本书成为一部很有价值的软件技术书籍。
本书新的第2版增加了许多内容,特别反映了程序设计语言领域最近几年的新发展。例如书中特别讨论了C99的许多新特征,讨论了Java和C# 的泛型机制,Java等语言最新的并行库的重要特征,Python和Ruby语言的面向对象模型和高级结构。本书的内容也大大增加了,配套光盘里包含一些问题的深入讨论,还有许多很有价值的参考材料。
总而言之,本书在许多方面有鲜明特色,是程序设计语言领域教科书的最新代表。本书出版之后受到人们的广泛关注,很快被世界各国的许多重要大学选为“程序设计语言”或相关课程的教科书或重要参考书。我认为,这本书不仅值得计算机专业的本科生或研究生学习,也值得计算机领域的实践工作者们阅读。对本书的学习能帮助我们理解现有的各种程序设计语言,提高学习和掌握新语言的能力,还能帮助我们看清隐藏在高级语言的各种机制背后的许多深入的东西,理解各种重要语言特征的价值、缺陷和使用它们的代价。对程序设计语言的深入理解,对于计算机专业工作者深刻理解相关的理论和实践,灵活高效地运用程序语言和相关工具,都可能起到非常重要的作用。
我非常赞赏电子工业出版社引进这本很有价值的著作,也很高兴能在把本书介绍给国内读者方面做些工作。我感谢方舟编辑的远见卓识和陈元玉编辑的辛勤工作,还要感谢夏萍和丛欣对我的一贯支持和帮助。本书涉及领域广泛,其中许多是我不熟悉的。虽然我已尽可能查阅了一些材料,但书中难免还会留下许多缺陷,希望得到同行和读者的指教。
裘宗燕
2007年5月于北京大学






