商家名称 | 信用等级 | 购买信息 | 订购本书 |
两周自制脚本语言 | |||
两周自制脚本语言 |
网友对两周自制脚本语言的评论
花了几周读完了这本书,虽然比较入门,但还是有些收获。两周读完这本书问题是不大,但是要真正理解这本书的内容需要更多的时间。
撇开书名,这本书的实际内容是“如何设计一种简单的脚本语言”与“如何为该语言设计语言处理器,实现词法分析和语法分析”,是一本很不错的编译原理入门书。书的内容组织挺好,难易度适中,也介绍了不少进阶话题。另外这本书提供了完整的代码实现,能够在一步步设计的过程中实际把编译器跑起来,让人有兴趣一直读到底,并在读完本书后去系统学习相关的知识。
总之,这并不是一本教你怎样设计一门新的高效的脚本语言的书,而是一本讲解编译原理的入门读物。这本书选择了
Java 来实现,也是为了便于读者理解,顺便可以利用已有的工具大幅减少实现的代码量。最近批评 Java 是一种流行,但仅以这本书使用了 Java 来帮助读者理解就判断这本书本身不好,而没有真正静下心来读过书的正文,未免过于草率。
本书虽然用了 java ,不过代码都比较容易读懂。
对于理论的解释也挺到位,如果你打算研究编译原理,建议把此书作为一个参考,当然不要仅仅是读它,更重要的是去实践书中提到的例程。
讲解也是从简单到复杂,学习曲线比较平缓,一些概念也比较清楚,例如 P.64 对环境对象(ENV,有些书称为环境)的讲解就比好多其他书更清晰明了,如下:
“环境对象”指的是一种用于记录变量名称与值的对应关系的数据结构,它常以哈希表的形式实现。当程序中出现新变量时,由该变量的名称与初始值构成的名值对将被添加至哈希表,之后再次遇到这一变量时,程序将搜索哈希表并取得其值。如果摇赋新值给该变量,程序将会把原有变量的名值对更新为新的数据。“
这段描述对于初学者来说是非常容易理解的,而其他书籍中关于环境的解释就没这里的清楚(也许是我看得书比较少,总之最清晰的就是这里)。看看另外一本经典读物《计算机程序的构造和解释》中对于环境的描述: P.162 求值的环境模型
”一个环境就是框架(frame)的一个序列,每个框架是包含着一些约束的一个表格(可能为空),这些约束将一些变量名字关联于对应的值(在一个框架里,任何变量至多只能有一个约束)。每个框架还包含着一个指针,指向这一框架的外围环境。“
是不是觉得对于一个初学者来说,虽然后一种描述更严谨,但是前一种描述更容易理解。
我花了一个晚上看完了。
差点没有通宵。
概念很清楚,
曾经读过Building Parsers with java, Program language processorde等书。
也看过很多国内的书和教材,估计火候未到,自己太愚笨,始终不是很明白。
这本书写的确实简单明白,概念也清楚,代码示范也一目了然。
本书需要一定的正则表达式基础和java基础,之前接触过编译器的组件的话,
上手更快。
虚拟机部分没有gc垃圾回收之类的。
补充一句,人家日本人确实厉害,佩服 !
通俗易懂,以通用编程java语言为基础,主要提出了重写底层编译器,解释器的思想。
和其他翻译的日文技术书籍风格一致,本书注重实践,深入浅出,介绍了作者设计的Stone语言,一步一步带领读者完成词法分析,语法解析,通过贯穿全书的AST,实现了表达式解析,函数解析,甚至还有闭包。第一步完成解释器,再扩展到中间语言和优化,最后到类型实现和Java虚拟机的支持。整本书概念一致,思路清晰。
理论部分放在最后,感觉有点晚,篇幅比较少。如果和实际实现部分穿插一起可能效果不同。另外编译器的经典优化部分涉及很少,虽然有专门优化的一章,不过和经典编译器优化还有距离。
其次作者使用自己开发的Java语言扩展,感觉对代码可读性没什么帮助,而且更遭了。
总体而言,比较国内千篇一律的编译原理书籍,本书可算是相当优秀的入门书籍。对于DSL的设计者也有很大价值。
章节清晰,循序渐进,书本要讲解的知识范围也很明确,很适合没有自制编程语言方面基础的人
喜欢两周自制脚本语言请与您的朋友分享,由于版权原因,读书人网不提供图书下载服务