第3版前言
由于我的年事已高,本次改版由跟随我二十余年、从事程序设计语言和编译教学、科研的王晓斌副教授和陈文宇副教授执笔。他们能很好地继承我的风格,深入浅出地分析程序设计语言的结构、编译的基本技术。他们有丰富的教学经验,在科研工作中曾实现过几个语言的编译系统;他们年富力强,对近年来语言的发展有更多、更深刻的理解。这些都是他们写好本教材的基本保证。
本书是一本适合大多数学校计算机专业的广口径教材,按照CC2001和CCC2002教程改写,覆盖了编程语言(PL)模块的全部内容。
在改写中,力求简明、通俗,注意可读性。本次改版将第二版中的附录“Java语言概述”替换为“形式语言与自动机简介”,Java语言部分内容插入到书中的相关章节。在语义分析部分,纳入了数组的内容;在优化部分,增加了并行优化。
作为计算机工作者,必须要与计算机进行交流、通信,所使用的工具是程序设计语言,用来告诉计算机“做什么”和“怎么做”。而程序设计语言数以千计,千姿百态,到底在大学中学习哪些语言才合适?我们的观点是,学会一两种语言的程序设计,更重要的是在此基础上了解语言的共性,这样,就具有鉴赏、评价、选择、学习和设计程序语言的能力。本书的上篇就是为达到上述目的编写的。以抽象的观点,将程序设计语言的共性抽象出来,然后用相应的语言去说明这些共性。
随着计算机技术的发展,有越来越多的人认为,编译程序的设计和实现是专家的工作领域,并非每个计算机专业的学生都需要具有设计和实现编译程序的知识和能力,有的学校减少了学时,有的学校更砍掉编译课程。多年的教学经验告诉我们,编译系统作为计算机系统软件之一,其设计和实现的系统性,能使学生对软件系统的结构形成及系统的建立有个充分的了解。因此,本书的下篇讨论了编译程序的5个阶段及每个阶段的基本实现技术。
本书为教师提供了教学参考资料,包括课件、教学指导书和习题答案,需要的老师可通过电子工业出版社的教材服务部(www.huaxin.edu.cn)获得教学支持。
本书的出版获得了许多同事的帮助,余盛季、屈鸿为资料的收集和整理做了大量的工作,并为本书的编写提供了很多有价值的建议,在此对他们表示衷心的感谢。本书的下篇(第7~13章)由王晓斌编写,上篇(第1~6章)、附录由陈文宇编写。若书中出现谬误,恳请读者不吝赐教。
龚天富 教授
2008年9月 于中国·成都