诚心地说,这是一本好教科书,但不是一本全能的书,也不是一本工具书。这本书不适合实践,里面通篇的抽象大道理,例子不多。如果你之前对编译原理不甚了解,或是想巩固对编译原理知识,这本书再适合不过了;如果你已经具备了编译知识,想自己动手构建一个编译器的话,我还是推荐你去看鲸书和虎书;如果你想做程序优化,RICE大学的那本书更适合。
相比20年前的第一版,龙书加入了不少内容,介绍了更多中间语言表示层次和优化,也单独分开章节介绍了指令级并行和过程间分析。第二版的内容减去第一版的内容,也就大概是这二十年来编译器发展的主要成果了 ---- 各种优化,并行,平台无关性。但是为什么编译器词法和语法解析部分没有怎么更新捏?因为这东西早就已经做到极致了。
总得来说,这是一本值得所有程序员一读的好书,但是相对于技术的发展,这本书的内容从现在看来过于狭隘和抽象。如果想要比较彻底地了解编译器对程序语言的作用和影响,这本书是远远不够的。
龙书不是万能书,是一本骗钱的好书。
能写出这书评说明楼主很装逼。当年也是买了没看。大学的时候曾经梦想自己手工写出一个编译器,但是只写完词法分析就写不下去了,下了一堆错误处理的论文,还没有看完。我对编译这套东西也很感兴趣。
我最近才想学习编程,我一点编程基础都没有,这本书适合我吗?我是先把编程的基础学会了再看这本书,还是边看边学习呢?刚开始学习编程有什么好的书可以推荐的吗?
http://compilerjobs.
楼上的不要太鸡冻了嘛,这只不过是一个书评而已。这本书是我的参考书之一,怎么会骂它呢。我学编译的时候用的是第一版,刚看完第二版就出来了,买来后发现仅是稍加改动,所以心里稍有不爽写出来,大家不要太在意。作为一个编译优化方向的研究人员,我岂敢对各元老出言不逊?
诚然,要学编译首先看龙书,因为这是基础。标量机的优化,看那本鲸书;并行机的优化,看Kennedy的。需要依赖优化,看Uptal Banjee的Loop Transformations for Restructuring Compiler那三本。但是无论如何,龙书所讲的是基础,具有非常好的参考价值。
不同意LZ的说法.
一.我不觉得他们是要骗钱.这种说法有点搞笑.对于学习编译原理的学生,其实第一版还不过时.
二.很多书.只是略微改一下就出第二版.第三版.这也很正常.不知道LZ为什么还要讲什么骗钱.书改进不好吗?至少对比第一版,第二版可以明显感觉到一些语句,还有习题位置的安排,章节结构等都有较大的改进.
---
明显的第二版要比第一版好.而且你要明白.这本书本身的定位.这是第一本编译原理的教科书.要学高端的优化之类的.可以看那本<advanced compiler design and implemenation>.每本书有每本书的定位.
明明自己也喜欢这本书.还这么讲.不知道你是什么意思.
总得来说,这是一本值得所有程序员一读的好书,但是相对于技术的发展,这本书的内容从现在看来过于狭隘和抽象。如果想要比较彻底地了解编译器对程序语言的作用和影响,这本书是远远不够的。
--------------------------------------------------------------
这本书不是过于狭隘,而是定位于基础理论教学
这本书也不是过于抽象,而是这套东西本身就偏形而上
这本书之所以被吹得很牛是因为大多数人读不懂
这本书之所以不容易读懂是因为这套东西确实不需要太多的人懂
不能说这本书骗钱,即使是第四的monica lam的,在compilation界的地位也是有目共睹的,其他三位都是元老级的。
其实对于compiler guy来说,好书不多的,除了ken kennedy的那本data parallel外,就只有鲸书了。 我不认为这本书骗钱,也绝对不是原版的重写,大量新的信息,绝对值得有志于compiler的读者好好学习。
你可以说这本书不像tiny c那样有很多实例,但是这本书背后有大量paper可以补充阅读,练习也很值得去研究。