[转]编程语言相关的好书

原文:http://zhuanlan.zhihu.com/forallplt/19917853

 

分为程序语言理论、编译原理、程序分析三部分。不涉及“如何学习某一具体语言”

1. 程序语言理论

1.1 Learn from Lisp/Scheme

《计算机程序的构造和解释》(SICP)。函数式语言的“设计模式” (PS:要!做!习!题!

Essential of Programming Language, Mitch Wand and Dan Friedman。学究气少,在玩各种解释器的过程中自然就把很多概念都搞懂了~

1.2 类型与形式理论

Types and Programming Language, Bejamin Pierce. 到底什么是动态/动态类型,强/弱类型?类型推导/检查很困难么?...不用担心,这本书理论性并不强——公式不多。不过绝对是权威级的(被引用率也颇高).

对这方面研究前沿感兴趣的同学,可以继续看 Advanced Topics of Types and Programming Language~

Semantics with Application [pdf] 形式化语义相关的。公式预警、、

Puerly Functional Data Structures ,Chris Okassaki的博士论文。函数式算法/数据结构的设计、实现。

2. 编译原理

2.1 传统向

Parsing Techniques。

《可变目标C编译器》。 这部书介绍了ANSIC编译器lcc的设计和实现,实践性很强。可与“虎书”结合看。(PS:中文翻译很捉急。。)


《高级编译器设计与实现》(鲸书)。龙书、虎书不再列出。

《现代体系结构的优化编译器》我是和鲸书结合起来看的(虽然有所重复),它们加起来几乎涵盖传统编译优化的一切。

2.2 虚拟机、GC等

《虚拟机——系统与进程的通用平台》

Garbage Collection——Algorithms for Automatic Dynamic Memory Management


The Garbage Collection Handbook: The Art of Automatic Memory Management

2.3 函数式语言相关

The Implementation of Functional Programming Languages, Simon Peyton Jones。SPJ对Haskell设计、实现、推广的贡献可排在前三。 这本书涉及模式匹配、惰性求值等“函数式特性”的实现,编译优化相关的不多。

Compiling with Continuation, Andrew Appel。这本书主要讲的是函数式语言的编译优化,作者参与了SMLNJ(Standard ML编译器)的开发。虽然后来又有了ANF变换,另外MLton的优化更多的基于SSA而非CPS。但是Continuatin的概念对程序语言的设计、实现意义深远。

3. 程序分析

在应用上,编译优化、硬件综合、形式验证、软件安全等都和程序分析紧密相连

假如做学术,可以投的会议很多,“硬至ASPLOS 软至POPL/PLDI,软件工程的ICSE/FSE,操作系统的OSDI/SOSP,通信安全的CCS,都可以投”.....

Principles of Program Analysis。 对数据流、控制流分析,抽象解释等都有涉及。因为示例语言比较简单,可能深度有所不够。

Static Single Assignment Book PDF]。 多位作者共同撰写。几乎所有的现代编译器,如GCC、LLVM都有将SSA技术的支持, 不仅是编译器,HotSpot JVM, .Net的Mono,Python的Pypy,这些虚拟机/解释器中的Just-in-Time Compiler也有了SSA的支持系统。本书系统地介绍了SSA,以及基于SSA的各种分析。

 

posted @ 2014-12-19 17:39  Scan.  阅读(1063)  评论(0)    收藏  举报