一万小时 / 编译原理系列之开篇

远没到拼智商的时候

编译原理系列之开篇

2013-05-13 posted in [点滴技术] with tags: [compiler, RE, and automata]

compiler

编译原理是各个CS专业的必修之课,无论是欧美,还是我们中国的大学生,可是 如果此刻回想时,对于编译的理解和相关技术的掌握又能够有多少?以自己为例, CS专业的我,在本科三年级学习了《编译原理》课程,但只限于当时对于相关技术 的粗略了解,达到能够应付考试的水平;准备考研时,由于《编译原理》是必考, 又将这个课程认真学习以一遍;后来到了研究生阶段,又学习了所谓的《高级编译原理》, 但又只是过去的重复。回顾这个过程,我缺少的是什么?想了想,大致罗列如下:

  1. 深层原因的探究:例如KMP算法,状态机,语法树等
  2. 基本原理的理解:编译原理能够让我们更加了解计算机,知道其工作原理
  3. 实际的锻炼:纸上学来终觉浅,只有实际的基于现有技术实现完整的编译器,这才能够 对于编译的过程和原理有更深的理解
  4. 最新编译技术的了解:iOS的火热,苹果弃GCC而选择Clang和LLVM,其中原因又是为何?

当然,毕业已经3年多的今天,再次学习,不为那考试,也不为考研,只是想达成上面的4条, 以及提高自身的编程能力,当然少不了前辈们的鞭策,如Steve Yegge的Rich Programmer Food

计划

编译的学习是个不算轻松的过程,特别是数学不好的我,但是就像大多数人一样,我们看不起的不是 你的无能,而是你的不努力。克服困难的过程也当然是很有意义的。

  1. 通过Dragon Book, Tiger Book以及Whale Book的阅读,互为印证,互相参考,来达成对于重要技术和算法的理解
  2. 跟随Coursera中的Compiler课程学习,基于语言COOL的编译器实现
  3. 记录学习过程与此blog(学习过程中的总结应该用自己的语言来描述,并且有相关的扩充材料的总结)
  4. 将代码置于此代码库来管理

就像Yegge文中所言,编译中蕴含的技术与理论不止有益于编译器的实现,同样适用于日常的编程与项目,如 正则表达式、状态机、优化等。

作为鞭策自己记录和学习的文字,倘若能够帮助到别的同学,那也自是非常欣慰的。

系列目录

  1. 开篇
  2. 概述
  3. 词法分析

参考资料

  1. Rich Programmer Food
  2. Tiger Book
  3. Dragon Book
  4. Compiler
  5. COOL
  6. 此代码库
  7. Whale Book
comments powered by Disqus
Top

Press q to hide the help

Key Action Key Action
Small Scroll j Scroll Down k Scroll Up
Big Scroll b Scroll to Bottom t Scroll to Top
Post Navigation n Next Post(if exists) p Previous Post(if exists)
Page Navigation h Go to Blog's Home Page a Go to Blog's Archive Page
Page Navigation c Go to Blog's Category Page ? Show this help
Misc s Go to Search Box q hide the help