《盗梦空间》与编译器

前阵子去看盗梦空间,本来我迷迷糊糊没看太明白还好,我看电影经常看不懂。但是等到结束,有观众开始鼓掌叫好,我就顿时感觉很郁闷──为啥他们看懂了我却不行!

这几天突然由这个联想到编译器。你写的代码是要生成代码的代码──code generator. 写 code generator 的时候,你不仅要考虑你的 generator 能否正常运行,更重要的任务是生成的汇编代码能否正确运行,能否正确地使用有限的寄存器,尤其是在递归调用等复杂的情形中。现在写一个复杂语言的编译器,code generator 之前更基础的 lexer/parser 也不可能手写, 所以想象一下 lexer generator/parser generator (如 lex/yacc), 也是一个重重梦境的情形。这一切对我们这些新手来说是那么不稳定和难以捉摸,有时候你都搞不清楚自己是在哪一层,就到了“游离状态”,但是对那些造梦高手,都是手到擒来的事了。

建议对编程有兴趣的人,都找个编译原理的经典书籍读一下,这非常锻炼编程方面的思维能力。我比较推荐的是龙书──编译原理、技术与工具 (Compilers: Principles, Techniques, and Tools)。我当时看的是1986年的第一版,历经20年,一些基础理论仍然没有过时,不过在06年有了第二版,现在国内有影印版可以购买。突然想起以前就写了一篇介绍的文章“Purple Dragon Book”。再次提醒,珍爱生命,远离中译本 (也许翻译得不差,但是翻译总是会有不可避免的误差),感受原著的魅力,看这些造梦高手如何将高超的技艺传授给你!

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *

Time limit is exhausted. Please reload CAPTCHA.