分类:
2009-02-07 19:27:30
在实践中,如果一个程序员具备强悍的计算机语言处理能力,则他的程序编写和设计能力将会比其他人有层次上的超越,往往能够做出创新
性的成果,给开发的效率和效果带来本质性的提升。不但如此,在编译技术中,有很多思想和具体的算法,在很多其他场合能发挥意想不到的效果,可以说编译技术
是软件开发的一个思想和工具的宝库。然而在为数几百万的专业程序员队伍当中,能够主动利用这一宝库,运用现有工具熟练处理语言者,已经是少数。而能够主动
根据需求设计优质的计算机语言,并且开发配套语言处理工具的人,更是凤毛麟角。究其原因,一是因为语言设计本身对设计者的要求很高,非有深厚学养和实践者
难以有所作为,二是因为编译技术本身颇有一定门槛,不但有一整套抽象的理论,而且涉及多个环节,大量细致的算法,需要集中精力系统学习,不容易掌握,更很难臻于上乘。
放下计算机语言理论不提,若谈及编译技术,这本由几位著名计算机科学家合著的"龙书"自出版以来就称为本领域的经典著作,被世界众多著名大学选作编译技术本科和研究生课程的教材,可以说是编译技术的"圣经"。
也正是因为这本书的名气最大,围绕它的争议也最多:赞誉它的人说它名门正派,体系完整清晰,技术点交代一丝不苟,语言严谨,思路缜密,义正词严,绝无投机
取巧之媚态,凡认真学习编译技术者必读之。而批评者则认为,面对编译技术这样一个枯燥艰深的课题,本书严谨有余,活泼不足,显得太刻板。知名的技术专家Allen Holub甚至因为不满意这本书对于编译技术的阐述方式,亲自捉刀写了一本书。然而更多的人还是认为,尽管这本书不可避免地有自己的缺点,但是全面衡量之下,这本书仍然不愧是编译技术领域最全面最重要的著作,是编译领域的"THE BOOK"。在我看来,龙书是一本严谨系统的学术性经典教材,对于有意系统了解编译技术的读者来说,确实不愧为必读之书。
本书一版于1986年,横行天下二十年,可以说已经是个奇迹了。2006年,原书三位作者与一位新作者合作,根据二十年来编译技术的发展,编写了本书第二版。新版风格与特色与老版相似,但充分反映了该领域最新的重要成果,并且采用Java作
为范例语言,体现出了作者开放进取的心态。更为重要的是,龙书作者认识到,大多数读者不会亲自去构造一个编译器,而是希望从编译这个思想技术宝库中汲取营
养,因此特别注意了概念思路的叙述和内容的启发性。全书有两大重点,前半部分侧重于传统的词法和文法分析,后半部分则详细介绍优化原理和技术。这两个重
点,可以说是编译技术思想库中最璀璨的宝贝,在很多领域都有着广泛的应用和启发性。可见作者绝不是就事论事,狭隘执着于编译本身,而是希望尽可能给读者提
供更具实践意义的工具和锻炼。这大概是这本新版龙书最出色的地方。
由于出现了Lex/Yacc,特别是近年来流行的ANTLR等LL(*)语言处理程序生成工具,如今编写语言处理工具的难度已经大大降低了。然而若想达到较高的境界,系统的学习和实践本书的内容仍然是必要的。相信新版"龙书"中文版的出世能够帮助更多年轻程序员真正理解编译技术,并且为我所用,做出创新的成果。