编译领域里程碑之作--龙书《编译原理》(转)

       编译技术一向被认为是软件开发这个以工程和实践为主的学科当中真正的"火箭科技"。一个程序员,当他掌握了基本的编程技能,并且具备一些实践经验以后,如果要求在编程技 术上进一步深造,则无非有三个方向:其一是钻研高超的算法,其二是深入计算机和网络体系结构,其三则是提升编程的抽象层次,三条路线彼此相关,触类旁通, 殊途同归,无分优劣。不过从编程技术本身来说,提升程序的抽象层次具有化繁为简、四两拨千斤的妙趣,尤其引人入胜。六十年来计算机和软件技术的一切发展, 就是抽象层次不断提升的过程。从最早的硬件开关、机器语言、顺序加跳转的指令流,到后来的高级语言、结构化编程,再到近二十年来相继兴起的面向对象、构件 技术和面向服务架构,无不遵循着这一逻辑。提升抽象层次有多种手段,函数库、类库、框架、构件、服务,不一而足。而在所有的手段当中,计算机语言是层次最高、能力最强、最富妙趣的一种,别的手段能 够达到的效果,语言都可以更轻松的实现,而语言所具备的某些效果,则没有别的手段可以企及,语言是提升软件抽象层次的终极手段。这并不奇怪,人类的抽象能 力最终归于语言,这是在哲学范畴内已经被深入讨论过的命题。因此,计算机语言的理论及其处理,被很多一流学者认为是计算机科学中最成熟、最优雅、与实践结 合最完美的部分,其重要性不言而喻。

       在实践中,如果一个程序员具备强悍的计算机语言处理能力,则他的程序编写和设计能力将会比其他人有层次上的超越,往往能够做出创新 性的成果,给开发的效率和效果带来本质性的提升。不但如此,在编译技术中,有很多思想和具体的算法,在很多其他场合能发挥意想不到的效果,可以说编译技术 是软件开发的一个思想和工具的宝库。然而在为数几百万的专业程序员队伍当中,能够主动利用这一宝库,运用现有工具熟练处理语言者,已经是少数。而能够主动 根据需求设计优质的计算机语言,并且开发配套语言处理工具的人,更是凤毛麟角。究其原因,一是因为语言设计本身对设计者的要求很高,非有深厚学养和实践者 难以有所作为,二是因为编译技术本身颇有一定门槛,不但有一整套抽象的理论,而且涉及多个环节,大量细致的算法,需要集中精力系统学习,不容易掌握,更很难臻于上乘。

       放下计算机语言理论不提,若谈及编译技术,这本由几位著名计算机科学家合著的"龙书"自出版以来就称为本领域的经典著作,被世界众多著名大学选作编译技术本科和研究生课程的教材,可以说是编译技术的"圣经"。 也正是因为这本书的名气最大,围绕它的争议也最多:赞誉它的人说它名门正派,体系完整清晰,技术点交代一丝不苟,语言严谨,思路缜密,义正词严,绝无投机 取巧之媚态,凡认真学习编译技术者必读之。而批评者则认为,面对编译技术这样一个枯燥艰深的课题,本书严谨有余,活泼不足,显得太刻板。知名的技术专家Allen Holub甚至因为不满意这本书对于编译技术的阐述方式,亲自捉刀写了一本书。然而更多的人还是认为,尽管这本书不可避免地有自己的缺点,但是全面衡量之下,这本书仍然不愧是编译技术领域最全面最重要的著作,是编译领域的"THE BOOK"。在我看来,龙书是一本严谨系统的学术性经典教材,对于有意系统了解编译技术的读者来说,确实不愧为必读之书。

       本书一版于1986年,横行天下二十年,可以说已经是个奇迹了。2006年,原书三位作者与一位新作者合作,根据二十年来编译技术的发展,编写了本书第二版。新版风格与特色与老版相似,但充分反映了该领域最新的重要成果,并且采用Java作 为范例语言,体现出了作者开放进取的心态。更为重要的是,龙书作者认识到,大多数读者不会亲自去构造一个编译器,而是希望从编译这个思想技术宝库中汲取营 养,因此特别注意了概念思路的叙述和内容的启发性。全书有两大重点,前半部分侧重于传统的词法和文法分析,后半部分则详细介绍优化原理和技术。这两个重 点,可以说是编译技术思想库中最璀璨的宝贝,在很多领域都有着广泛的应用和启发性。可见作者绝不是就事论事,狭隘执着于编译本身,而是希望尽可能给读者提 供更具实践意义的工具和锻炼。这大概是这本新版龙书最出色的地方。

       由于出现了Lex/Yacc,特别是近年来流行的ANTLR等LL(*)语言处理程序生成工具,如今编写语言处理工具的难度已经大大降低了。然而若想达到较高的境界,系统的学习和实践本书的内容仍然是必要的。相信新版"龙书"中文版的出世能够帮助更多年轻程序员真正理解编译技术,并且为我所用,做出创新的成果。

转载于:https://www.cnblogs.com/newthinker/archive/2009/02/19/1746117.html

本书深入讨论了编译器设计的重要主题,包括词法分析、语法分析、语法制导分析、类型检查、运行环境、中间代码生成、代码生成、代码优化等,并在最后两章中讨论了实现编译器的一些编程问题和几个编译器实例,每章都提供了大量的练习和参考文献。本书从介绍编译的原理性概念开始,然后通过构建一个简单的一遍编译器来逐一解释这些概念。 本书是编译原理课程的经典教材,作者曾多次使用本书的内容在贝尔实验室、哥伦比亚大学、普林斯顿大学和斯坦福大学向本科生和研究生讲授初等及高等编译课程。 本书作者Alfred V.Aho、Ravi Sethi和Jeffrey D.Ullman是世界著名的计算机 科学家,他们在计算机科学理论、数据库等很多领域都做出了杰出贡献。本书 是编译领域无可替代的经典著作,被广大计算机专业人士誉为“龙书”。本书一 直被世界各地的著名高等院校和科研机构(如贝尔实验室、哥伦比亚大学、普 林斯顿大学和斯坦福大学等)广泛用作本科生和研究生编译原理与技术课程的 教材,本书对我国计算机教育界也具有重大影响。 书中深入讨论了编译器设计的重要主题,包括词法分析、语法分析、语法制 导分析、类型检查、运行环境、中间代码生成、代码生成、代码优化等,并在 最后两章中讨论了实现编译器的一些编程问题和几个编译器实例,而且每章都 提供了大量的练习和参考文献。 本书可以作为高等院校计算机专业本科生和研究生编译原理与技术课程的 教材,也可以作为计算机技术人员必读的专业参考书之一。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值