Dec 01 2007

两本《编译原理》何其相似!

Published by shinjikun at 1:42 pm under 未分类 1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...

中科院研究生入学考试所指定的编译原理课程参考书是1989年12月第一版的,中国科技大学出版社出版的《编译原理》一书,作者为陈意云。在第一版的前言中说,“本书是根据国外的一些专著和论文编写的,它不仅包含了最经典、最广泛应用的基本编译技术,还反映了直至80年代的一些重要的新成果,这是本书区别于其他有关这方面的著作的显著特点。”

但是其所谓“根据国外的一些专著和论文编写的”,其实是整章照抄编译原理学科的最著名著作,被称为“龙书”的Compiler: Principles, Techniques and Tools(编译器:原理、技巧和工具)。该书出版于1986年,作者Alfred V. Aho、Jeffery D. Ullman和Ravi Sethi。

该书无论是书中的几乎所有的示例、图表甚至几乎所有的文字都是翻译自此书。该书除原书第二章被删节掉外,几乎所有都是原书的直接抄袭或者节选。陈书第10章和第11章并非参照龙书,所写的是龙书所未涉及的内容。

下面把第二章摘抄一小部分,请各位了解我所谓“整章照抄”是什么意思:

第二章 词法分析

开篇:

陈书:构造词法分析器的一种简单方法是建立描述源语言记号结构的图。然后手工翻译这种图成为识别记号的程序。这种方法可以产生高效的词法分析器。
实现词法分析器的技术也可以用于其他方面,如查询语言和情报检索系统……(以下所有内容为抄袭)

龙书:This chapter deals with techniques for specifying and implementing lexical analyzers.  A simple way to build a lexical analyzer is to construct a diagram that illustrates the structure of the tokens of the source language, and then to hand-translate the structure of the diagram into a program for finding tokens. Efficient lexical analyzers can be produced in this manner.(本章讨论特定实现词法分析器的实现技巧,构造词法分析器的一种简单方法是构建描述源语言记号结构的图表。然后将此图表的结构手工翻译成用以识别记号的程序。这种方法可以产生高效的词法分析器。)
The techniques used to implement lexical analyzers can also be applied to other areas such as query languages and information retrieval system. …(实现词法分析器的技术也可以应用于其他领域,例如查询语言中和信息(陈书把information 翻译成“情报”)检索系统)

紧接着:

陈书:词法分析是编译的第一阶段,它主要任务是读输入字符流,产生于语法分析的记号序列。概括于图2.1(图表为抄袭)中的相互作用一般是通过把词法分析其作为语法分析器的一个子程序来实现的。(以下此节所有内容为抄袭)

龙书:The lexical analyzer is the first phase of a compiler. It’s main task is to read the input characters and produce as output a sequence of tokens that the parser uses for syntax analysis.This interaction, summarized schematically in Fig 3.1, is commonly implemented by making the lexical analyzer be a subroutine or a coroutine of the parser.(词法分析器是编译器的第一个部分,它主要任务是读输入字符并产生于语法分析器的记号序列。这个交互作用,示意性地概括为图3.1。通常用构造一个作为子例程或协例程的词法分析器的方法来实现。)

紧接着:2.1.1分离词法分析器的理由,龙书为Issues in Lexical Analysis(词法分析要解决的问题),然而内容却一摸一样。之后所有节、示例均来自龙书。

另外,陈书还有翻译的问题。由于其对原书进行了删节,因此常常因为思维不连贯而影响理解。例如第四章第三节 L属性定义,第一句:“当在分析过程中进行翻译时,属性的计算次序受分析方法所限定的分析树节点建立次序的约束”这句话何其奇妙!本人读了三遍终于读懂:当在分析过程中进行翻译时,属性的计算次序(((受分析方法所限定)的分析树)(的)节点)(的)建立次序)的约束。原书中是这样描述的:When translation takes place during parsing, the order of evaluation of attributes is linked to the order in which nodes of a parse tree are “created” by the parsing method.可以翻译为:在分析的翻译过程发生时,属性的产生次序与节点的次序相关(linked不是“约束”),而节点的次序决定于分析过程(这个词有“方法”的意思,但是此处指的是之前的建立语法树的“过程”,而非建立语法树的方法。虽然“过程”一词在牵扯到对象时可以叫做“方法”,但此处显然不妥)“创建”的分析树。

陈书抄袭的数章,这里不能穷尽。请各位亲身体会两本书的异同。

 

附:陈意云个人主页:http://staff2.ustc.edu.cn/~yiyun/

其中称该书为“安徽省图书一等奖”

19 Responses to “两本《编译原理》何其相似!”

  1. engon 01 Dec 2007 at 1:47 pm

    国内这样“翻译”的“著作”实在太多了。译得好也倒罢了,大多数还译得结结巴巴,可谓“欺世盗名”加上“误人子弟”。看到这种书我就想起何老的名言:“谁叫你。。。”

  2. shinjikunon 01 Dec 2007 at 1:52 pm

    关键的问题是:为什么中科院的考研指定用书不使用“龙书”,而使用中科大编写的抄袭书呢?

  3. engon 01 Dec 2007 at 2:18 pm

    这我就不知道了。不过通常考研指定的书都比较烂,这是没有疑问的:)

  4. zeroyearon 01 Dec 2007 at 3:09 pm

    这也大惊小怪?哈哈!这个我可以告诉你,计算机原理方面的经典书,能读外文就不要看中文的,因为几乎没有中文的好书可看。北大清华出版的个别一些书还过得去,拿来上上课还行,要把基本原理搞扎实还是看英文的吧,因为中文书的一些奇怪的表述往往都是徒增费解,最后还得靠英文书来解惑。非要看中文也的确就是应付一下考题的套路。但像清华北大浙大,一般都是会指定中英两个版本相对照的(但未必是翻译)参考书的(包括考硕考博),而且有些专业试卷还就是全英文的(但答题未必要求用英文)。
    从其他帖子中看到,原来楼主是津大准备考硕的学生啊,快好好复习去吧,现在别泡网过度!若真有搞科研之心呢,考上硕以后,早点准备找个出国培养的机会,或者就准备出国读博,学问搞扎实了以后若还有救国之心呢,就回来做点实质贡献。现在就把国内读硕当个跳板吧(有本事就直接考国外读硕读博),很浮躁是吧?但由不得你,在国内你就别指望能安心搞科研了,绝对别指望(但可以不安心地搞,呵呵,退而求其次)!如果不是热衷于科研,那么当然另当别论!若以后反正也是打算在国内混的话,现在若有过得去的工作就赶紧优先考虑工作,若不得不考虑读硕了,那么现在就赶紧先去复习吧!别再困惑于这点“小事情”了,否则何来的新语丝的立此存照?

  5. shinjikunon 01 Dec 2007 at 3:22 pm

    to zeroyear:
    您的一番话让中科院在我心目中的形象继续下降了,好我努力看书!刻苦学习才是王道。

  6. shinjikunon 01 Dec 2007 at 3:37 pm

    虽然如此,我依然还是对中科院的学术水平很信任!

    另:中科院专业课 计算机软件基础 参考书目:

    编译原理:《编译原理和技术》陈意云 中科大出版社 –抄袭

    操作系统:《计算机操作系统》汤子瀛 西安电科出版社 –烂书一本。几乎就是一本教条式的政治课本,所有问题都没有什么思考。
    Operating System: Internals and Design Principles, William Stalling –这是经典书籍。但是好像就没考过里面什么内容。

    数据结构:《数据结构(C语言版)》严蔚敏 清华大学出版社 –经典书,但是里面的东西也太老了吧?这本书里“并查集”还叫做“Merge-Find Set”。晕死。

  7. zeroyearon 01 Dec 2007 at 3:39 pm

    声明,我的这一番话,并无一丝一毫攻击和贬低中科院研究生院之意图哦:),而且相反,事实上,据本人所知,在全国研究生院的大体情况来看,平均起来泛泛而论,中科院研究生院算是最务实和最扎实的了。

  8. zeroyearon 01 Dec 2007 at 4:07 pm

    像编译原理、操作系统、数据结构,都是很普通的课程啦,基本原理也好懂,书烂点也凑合,重在实践,而且这些书基本上每个院校自己都有一个版本的,不是说你抱怨,就是上课的老师,包括编者自己都会承认烂的,但是就是偏偏有书本质量以外的所谓充分的理由要求采用(中国特色),关于经典课程内容老化的问题,国外好像也一样的吧。其实现在已经好多了,比如浙大这些课程就已经直接用英文教材了。另外好在内容越难的书,通常也越不敢烂编,比如计算理论之类的,翻译也相当谨慎的。所以,这个大学教材的问题只要与国际接轨了,不难解决。倒是中小学教材问题才是让人担忧和头疼的误人子弟乃至误国误民的问题,这个就不谈了:)

  9. shinjikunon 01 Dec 2007 at 4:13 pm

    嗯嗯,zeroyear大牛的话总是那么精辟!

  10. zeroyearon 01 Dec 2007 at 4:27 pm

    我成大牛了:)

  11. hoopingon 01 Dec 2007 at 8:20 pm

    zeroyear说得很好.
    最近我在考博, 参考书也是烂就一个字
    算法有什么好的书推荐?

  12. shinjikunon 02 Dec 2007 at 3:46 pm

    其实算法的东西,前沿的都在网上有。
    对于经典的一般算法,MIT的算法导论算是最好的书。
    请问hooping考什么专业?

  13. zeroyearon 02 Dec 2007 at 4:41 pm

    是的,而且可以下载公开课程的录像,直接目睹大师上课的风采,呵呵!

  14. hoopingon 02 Dec 2007 at 4:57 pm

    我考计算机
    具体方向就以后再确定
    我也看过算法导论, 还下了电子版,还有答案的
    还有潘彦翻译的那本也不错
    这些全看完要费不少时间
    现在是不确定怎么考法

  15. shinjikunon 02 Dec 2007 at 7:14 pm

    有一个捷径,就是刘汝佳和黄亮的《算法艺术与信息学竞赛》(跟那个《计算机程序艺术》没关系)有兴趣看看这本书,讲得不是很深但是比较全。

  16. shinjikunon 02 Dec 2007 at 11:22 pm

    zeroyear大牛,我后来想了想,果然还是觉得这个问题不能睁一只眼闭一只眼。
    倘若因为这样的犯罪是普遍现象,就把他当作正常现象,这才是真正不正常的,不可取的。因为再怎么说,这都是学术腐败,都是肮脏龌龊的。

  17. zeroyearon 03 Dec 2007 at 12:10 pm

    楼主,我不是牛:)
    第一,我没有说这是正常现象,我是说你不要大惊小怪,先办正事(考硕)要紧,且不要“困惑”。
    第二,楼主又想怎么个不睁一只眼闭一只眼呢?楼主若是有心把这个事情查个水落石出,指出多少是照抄翻译,多少是编撰,查出这个书出版经费的由来,那自然是公益劳动,值得赞赏!

  18. shinjikunon 03 Dec 2007 at 12:35 pm

    嗯,说得对,要过一点确实大惊小怪了,而这样确实也有点不彻底。等我以后发达了,统统捅掉!

  19. hoopingon 03 Dec 2007 at 1:28 pm

    to shinjikun
    对这种事做到揭露就不错了,
    做好自己的事,最好的办法是写一本好书

Trackback URI | Comments RSS

Leave a Reply