您的浏览历史

编译原理第2版.本科教学版

促销活动
  • [本书]参加机械工业出版社华章公司满58元赠书活动

基本信息

内容简介回到顶部↑

《编译原理》是编译原理课程方面的经典教材,全面、深入地探讨了编译器设计方面的重要主题,包括词法分析、语法分析、语法制导定义和语法制导翻译、运行时刻环境、目标代码生成、代码优化技术、并行性检测以及过程间分析技术,并在相关章节中给出大量的实例。与上一版相比,本书进行了全面修订,涵盖了编译器开发方面最新进展。每章中都提供了大量的实例及参考文献。.
本书基于该书第2版进行改编,内容更加精练和实用,体系更加符合国内教学情况,适合作为高等院校计算机及相关专业本科生的编译原理课程的教材,也是广大研究人员和技术人员的极佳参考读物。
本书是编译领域无可替代的经典著作,被广大计算机专业人士誉为“龙书”。本书上一版自1986年出版以来,被世界各地的著名高等院校和研究机构(包括美国哥伦比亚大学。斯坦福大学、哈佛大学、普林斯顿大学。贝尔实验室)作为本科生和研究生的编译原理课程的教材。该书对我国高等计算机教育领域也产生了重大影响。..
第2版对每一章都进行了全面的修订,以反映自上一版出版20多年来软件工程、程序设计语言和计算机体系结构方面的发展对编译技术的影响。第2版全面介绍了编译器的设计,并强调编译技术在软件设计和开发中的广泛应用。每章中都包含大量的习题和丰富的参考文献。
本书基于该书第2版进行改编,保留其中的基本内容,压缩或删除了一些高级内容,更适合作为国内高校计算机及相关专业本科生编译原理课程教材。...

作译者回到顶部↑

作者: (美)Alfred V.Aho
Alfred V.Aho
博士是哥伦比亚大学计算机科学系主管本科生教学的副主任,tEEEFe,10w,美国科学与艺术学院及国家工程学院院士,曾获得IEEE的冯·诺伊曼奖。他是《编译原理》(Compiler:Principles,Techniques,andTools)的第一作者。他目前的研究方向为量子计算、程式设计语言.编译器和算法等。.. << 查看详细

[同作者作品]
编译原理 技术与工具(英文版)
编译原理
计算机算法的设计与分析

作者: (美)Jeffrey D.Ullman
Jefirey D.Ullman
博士先后任教于普林斯顿大学和斯坦福大学,现已退休。他是美国国家工程学院院士,曾获得1996年的Sigmod贡献奖和2000年的Knuth奖等诸多学术奖项,除本书外,他还与Aho合著了《编译原理》,与Hopcroft合著了《自动机理论、语言和计算导论》,并与其他数据库专家合著了数据库方面的名著,如《数据库系统基础教程》(AFirst Course in Database Systems)等。.. << 查看详细

[同作者作品]
编译原理 技术与工具(英文版)
编译原理
计算机算法的设计与分析

作者: Ravi Sethi
Ravi Sethi,Avaya实验室总裁,曾任贝尔实验室高级副总裁和Lucent Technologies通信软件的CTO。他曾在宾夕法尼亚州立大学,亚利桑那州立大学和普林斯顿大学任教,是ACM会士。..... << 查看详细

[同作者作品]
编译原理(原书第2版)(龙书)(12月1日china-pub全国独家首发)(09年度畅销榜TOP50)
编译原理第2版.本科教学版

作者: Monica S.Lam
Monica S.Lam,斯坦福大学计算机科学系教授,曾任Tensilica的首席科学家,也是Moka5的首任CEO。曾经主持SUIF项目,该项目产生了最流行的研究用编译器之一。... << 查看详细

[同作者作品]
编译原理(原书第2版)(龙书)(12月1日china-pub全国独家首发)(09年度畅销榜TOP50)
编译原理第2版.本科教学版

目录回到顶部↑

出版者的话.
改编者序
前言
第1章 引论1
1.1 语言处理器1
1.2 一个编译器的结构2
1.2.1 词法分析3
1.2.2 语法分析4
1.2.3 语义分析5
1.2.4 中间代码生成5
1.2.5 代码优化5
1.2.6 代码生成6
1.2.7 符号表管理6
1.2.8 将多个步骤组合成趟6
1.2.9 编译器构造工具7
1.3 程序设计语言的发展历程7
1.3.1 走向高级程序设计语言7
1.3.2 对编译器的影响8
1.3.3 1.3节的练习8
1.4 构建一个编译器的相关科学8

前言回到顶部↑

从本书的1986版出版到现在,编译器设计领域已经发生了很大的改变。随着程序设计语言的发展,提出了新的编译问题。计算机体系结构提供了多种多样的资源,而编译器设计者必须能够充分利用这些资源。最有意思的事情可能是,古老的代码优化技术已经在编译器之外找到了新的应用。现在,有些工具利用这些技术来寻找软件中的缺陷,以及(最重要的是)寻找现有代码中的安全漏洞。而且,很多“前端”技术———文法、正则表达式、语法分析器以及语法制导翻译器等———仍然被广泛应用。.
因此,本书先前的版本所体现的我们的价值观一直没有改变。我们知道,只有很少的读者将会去构建甚至维护一个主流程序设计语言的编译器。但是,和编译器相关的模型、理论和算法可以被应用到软件设计和开发中出现的各种各样的问题上。因此,我们会关注那些在设计一个语言处理器时常常会碰到的问题,而不考虑具体的源语言和目标机器究竟是什么。
使用本书
下面是各章的概要介绍:
第1章给出一些关于学习动机的资料,同时也将给出一些关于计算机体系结构和程序设计语言原则的背景知识。
第2章会开发一个小型的编译器,并介绍很多重要概念。这些概念将在后面的各章中深入介绍。这个编译器本身将在附录中给出。
第3章将讨论词法分析、正则表达式、有穷状态自动机和词法分析器的生成器工具。这些内容是各种文本处理的基础。
第4章将讨论主流的语法分析方法,包括自顶向下方法(递归下降法、LL技术)和自底向上方法(LR技术和它的变体)。
第5章将介绍语法制导定义和语法制导翻译的基本思想。
第6章将使用第5章中的理论,并说明如何使用这些理论为一个典型的程序设计语言生成中间代码。
第7章将讨论运行时刻环境,特别是运行时刻栈的管理和垃圾回收机制。
第8章将主要讨论目标代码生成技术。该章会讨论基本块的构造,从表达式和基本块生成代码的方法,以及寄存器分配技术。
第9章将介绍代码优化技术,包括流图、数据流分析框架以及求解这些框架的迭代算法。
哥伦比亚大学、哈佛大学、斯坦福大学已经开设了讲授本书内容的课程。哥伦比亚大学定期开设一门关于程序设计语言和翻译器的课程,使用了本书前8章的内容。该课程常年面向高年级本科生/一年级研究生讲授,这门课程的亮点是一个长达一个学期的课程实践项目。在该项目
中,学生分成小组,创建并实现一个他们自己设计的小型语言。学生创建的语言涉及多个应用领域,包括量子计算、音乐合成、计算机图形学、游戏、矩阵运算和很多其他领域。在构建他们自己的编译器时,学生们使用了很多种可以生成编译器组件的工具,比如ANTLR、Lex和Yacc;他们还使用了第2章和第5章中讨论的语法制导翻译技术。
斯坦福大学开设了一门历时一个学季的入门课程,大致涵盖了本书第1章到第8章的内容,同时还会简介本书第9章中全局代码优化的相关内容。
预备知识
学习本书的读者应该拥有一些“计算机科学的综合知识”,至少学过两门程序设计课程,以及数据结构和离散数学的课程。具备多种程序设计语言的知识对学习本书会有所帮助。..
练习
本书包含内容广泛的练习,几乎每一节都有一些练习。我们用感叹号来表示较难的练习或练习中的一部分。难度最大的练习有两个感叹号。

序言回到顶部↑

构造编译器的原理和技术是计算机科学技术领域中一个非常重要的组成部分,指导人们构造能够生成正确、高效的代码的编译器。现在的绝大部分软件都是使用高级程序设计语言编写的,需要使用编译器来得到可运行代码,因此编译原理和技术对于构造正确、可靠、高效的软件是非常重要的。经过了50年的研究发展,编译技术已经使得人们可以为各种高级编程机制生成高效的代码,使得人们可以使用更加抽象的语言来编写高效的软件。但硬件技术的进步仍然对编译技术提出了新的挑战。比如多核CPU的广泛应用要求更优秀的程序分析技术和并行编译器。因此,编译原理和技术在将来仍然是一个重要的研究课题。.
Aho.等人编写的《编译原理》是一本经典的教材。这本书不仅包含了编译器构造的基本原理和技术,还包含了很多和编译相关的高级技术。对于专业技术人员来说,这是一本很全面的参考书目。但是书中的很多内容超出了本科教学的要求,不符合中国的本科教材的习惯。因此,出版社委托我们对这本书进行改编,主要的工作是删减一些不需要在本科教学过程中讲授的内容。保留下的内容包括词法分析、语法分析、语义分析、中间代码生成,以及运行时刻环境、优化和代码生成方法的基本技术。
我们删去了原书的第十章、第十一章和第十二章。这三章的内容是关于并行性和程序分析的高级议题,一般不对本科生讲授。此外,我们对原书第九章机器无关优化的内容进行了删减,保留了一些基本的数据流优化算法。我们还删减了一些高级的算法和技术,包括运行时刻环境中的短停顿垃圾收集算法、类型检查中的类型推导和合一算法,高效构造DFA算法等。另外,我们还删去了一些与实现细节有关的技术,比如词法分析中缓冲区的管理、语法分析中LR分析表的压缩技术等。删去了这些高级内容之后,保留部分已经可以在一个学期的本科生课程中讲完。当然,考虑到不同学校有不同的专业要求,任课教师仍然可以考虑舍弃一些内容,比如第八章中关于代码生成的高级议题。..
编译原理是一门比较难学的课程。主要原因在于它包含了很多理论性的东西,抽象程度比较高,而且还包含了很多复杂的算法和用于编译器构造的抽象数学概念。我建议学生学习的时候可以先阅读本书的第二章。第二章的内容可以帮助大家了解编译器的基本构造和功能,然后在学习后续各章节的时候加深理解。自己动手编写一个小型语言的编译器也是一个很好的学习方法。使用Yacc和Lex等工具之后,编写一个这样的编译器并不需要很大的工作量,却可以有效帮助大家深入理解各种编译技术。
对编译的基本原理和技术有所了解之后,如果读者还希望进一步深入学习,我建议大家购买完整版的《编译原理》来阅读。...
译者
2009年4月

评论交流

共有2人开贴评论  2人参与评论  1人参与打分 查看

1人
 100%
用户平均打分
我要写评论 help如何参与评论和打分
0人
 0%
0人
 0%
0人
 0%
0人
 0%

mypaopao

一级评论员
该会员在china-pub购买过此书
评价等级:  
发表于:2009-6-20 10:03:00
与原书比,删掉了某些章节。
您觉得呢? 送鲜花 (得0支)  扔鸡蛋 (得0个)

dl_mu

一级评论员
  
发表于:2009-6-8 20:47:00
http://www.china-pub.com/39915 请问和这本书有什么区别吗?
您觉得呢? 送鲜花 (得1支)  扔鸡蛋 (得0个)
我要写评论
查看所有评论交流(共2条)