“别看那些编译原理的书了!这本书教你编写真正实用的解析器、翻译器、解释器等语言应用,⋯⋯”
这个⋯⋯这位是 Python 语言的发明人,著名的龟叔(Guido Van Rossum)。
“我的龙书被打入冷宫了!”
等等,这不科学啊!这位⋯⋯这位是Android Dalvik虚拟机的作者Dan Bornstein 。
这本书确实让我收获很大,但是我这次做不到一天读完整本了,笑⋯⋯这个领域,我不能说是专家,我用了很久来阅读这本书,进度有点慢,要将这本书中的知识转化为生产力,做出可以拿出手的东西,恐怕不知何年何月。不过正因为这样,我更感觉值得向大家推荐,因为这本书的确做到了一件很了不起的事情:把编程语言、解释器和编译器开发这些复杂艰深的技术,写成一本浅显易懂的书。
龙书和虎书这些经典教材,从出版到现在,已经有很多年过去了。这本书,看起来是个合格的继任者。它采用了更现代的Java语言(龙书是 Pascal 之类的传统教学语言),采用了更容易学习的内容组织方式,书中使用的基础工具ANTLR,也更为现代——不过,我得坦诚得说,这个工具我还没用过,我不能对它作出更进一步的评论。
这本书要比龙书易读易懂,上手容易的多。或许像一些朋友所说,龙书翻译的不好,所以不易懂,那么,这本书可以说翻译的不错。总之,这本书,这个译版,非常适合我们这些没有经过良好的理论学习的朋友,作为语言设计和实现领域的自学教材,也很适合专家人士阅读,梳理知识。考虑到国内象我这种野生的IT工程师特别多,那么这本书应该有很大范围的适读人群。
进一步说,实现一个编程语言,特别是实现一个微型语言,用这个语言去完成一个产品,在Unix中已经是传统文化,这是一种非常高效灵活,极具扩展性的方法。但是在很长时间内,这个很有价值的产品实现方式严重受限于技术成本。龙书出版时就自豪于他们将一个程序语言设计项目的人力成本下降到一到半人年(大意),而本书进一步将这个学习和工作成本降低了。有鉴于最近我也对这个领域有些兴趣,这本书对我相当及时。
唯一让我惆怅的是,如果此书流行开来,以后拿“设计过编程语言”来吹牛,就不好用了啊⋯⋯