-
Notifications
You must be signed in to change notification settings - Fork 21
Programming Languages: Application and Interpretation
Rrrandom edited this page May 8, 2015
·
1 revision
- External Link:
- Download Link:
- Rank: ★★★★
- Hard: ★★
- Tag: 解释器,Continuation,CPS,类型推导,宏
- Reviews:
这本书是布朗大学程序语言的课程用书.讲的东西和EOPL差不多,不过是先有的EOPL,后有的这本PLAI,两本书对比读一读,别有一番收获.
本书主要讲的就是一个问题,如何实现一个解释器.
从一个简单的计算器开始,引入函数做更高的抽象.
为了解决代换的效率问题,引入了环境,而环境中的函数就引出了闭包,接着解释器实现了递归以及变量.
作者从实际问题入手,介绍了CPS,接着介绍了continuation,并实现了它,continuation实际上就是个函数嘛,和GUI里常写的event handler类似. 作者对类型系统做了一个简单的介绍,讲了一下类型判定的问题,介绍了类型推导的一个经典算法:unification;介绍了下Prolog,然后说这就是用来做类型检查的好工具嘛...-_-|||.
本书的末尾作者介绍了scheme的宏,由浅至深举了几个生动的例子,并且回答了为什么要引入卫生宏.
在实现解释器的同时,书中对一些概念也做了对比和介绍,比如: static scope&dynamic scope, eager evaluation&lazy evaluation, call-by-value&call-by-reference等等. 同时,作者也对Java,C等进行了分析:比如为什么引入namescpace.
但是,本书的缺点也很明显:那就是有些东西没介绍啊,面向对象之类的都没提.不过本书的新版(草稿)提到了一些.
总的来说,这是一本值得推荐的书,个人认为适合在读完SICP后阅读风味更佳.