有没有一些“有趣”的方式来学习语言、语法、解析和编译器?

14
我正在为语言、语法、解析和编译器的考试做准备。这不是我的强项,我发现大多数资源都使用数学语言来定义行业术语并解释我需要了解的不同概念,而不是使用我非常喜欢的英语或法语。因此,我在找到继续学习的动力和理解理论方面遇到了一些困难。
所以我的问题是:你们中有谁知道我可以找到“有趣”的学习方式吗?或者至少,也许有一种更“具体”和不那么“数学化”的处理这个主题的方法。
我需要涵盖以下内容,因此任何与这些主题有关的东西都受到欢迎!
- 解析(LR、LL等) - 语法(上下文无关、确定性等) - 语法分析静态流分析 - 关于软件维护和对用户界面的依赖的影响分析 - 动态分析
以下是一些被认为是“有趣”(重点在引号上)的技术主题学习资源,只是为了让你们了解我正在寻找什么。
- Why's Poignant Guide to Ruby - 尝试 MongoDB(键入Help + Enter

如果你只剩下一周的时间,你就必须直接通读《龙书》才能覆盖这些大部分主题。那将不是一件有趣的事情。 - Ira Baxter
如果我只剩下一周的时间,我怀疑我能否快速地掌握《龙书》。 - Shawn
2个回答

16
如果您想在短时间内学到很多,可以从Val Schorre的1964年(是的,你没看错)关于如何构建自编译元编译器的Meta II paper中了解元编译器。作为免费赠品,它们也可以编译传统语言!这篇论文有10页,描述了元编译器(信不信由你),并包含了两个完整的编译器。
当您理解编译器如何能够编译自身时,会有一个令人震撼的时刻...我早在70年代就是这样学习编译器的,并且这是我所记忆深刻的编译器课程。这非常有趣。 这里有一个在线教程,使用JavaScript实现了所有的思路。 教程的作者是James Neighbors博士,发明了“域分析”这个术语。他将MetaII的思想用于一个名为Draco的出色领域特定代码生成器。 Draco是我过去30年正在构建的类似编译器的工具的关键灵感来源。

0

你需要多长时间来准备?学习编译器的“最佳”方法是深入研究它们,而这样做的最佳方式是使用有史以来最好的编译器书籍:龙书。它虽然有些陈旧,但非常棒。它不便宜,但可能是了解神奇编译器最具体和最少数学化的方法。

它没有任何闪烁的灯光,也不会像 Ruby 指南那样采用令人惊叹的字体,但它是前十名 每个程序员都应该阅读的书籍 之一。


是的,我没钱也没时间了(我只剩一周时间),但非常感谢你的推荐! - Shawn
3
上大学时,我并不是很喜欢编译器课程,但回头看发现我学到了很多,真的很值得。虽然可能听起来有些无聊,但我至今还在参考计算机科学中的四门课程之一就是编译器课程。在这里找到了一些视频讲座:http://stackoverflow.com/questions/424796/are-there-any-compiler-lectures-available-via-video - Nate Noonen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接