首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
V2EX  ›  问与答

编译原理到底该怎么学?

  •  
  •   Sanko · 131 天前 via Android · 2118 次点击
    这是一个创建于 131 天前的主题,其中的信息可能已经有所发展或是发生改变。

    国防工业出版社 陈火旺前辈的教材实在是难懂

    18 回复  |  直到 2019-04-12 16:51:58 +08:00
        1
    cyberCat   131 天前   ♥ 1
    龙书、虎书
        2
    Mithril   131 天前   ♥ 2
    如果觉得上来就怼理论比较难理解的话,可以先试试写一些小的 parser。
    比如正则的 parser,或者 JSON parser。这样就能理解这门课程学的理论是做什么的了。
    然后自己用 ANTLR 一类的东西看看怎么生成一个 parser,如何去描述语法和词法。
    国内的理论教材基本不会考虑学这个东西到底有什么用,你自己结合一些实践可能会比较好理解。
        3
    Yapie   131 天前   ♥ 1
    写一个小语言.教程很多
        4
    feather12315   131 天前 via Android   ♥ 1
    程序员的自我修养,入门看这个就行了。
    至于深入,做编译器相关的工作吧
        5
    wsyzzz   131 天前   ♥ 2
    我现在也正在学编译,建议入门先别跟着教科书学,中国出的教材就不谈了,龙书我刚才是看也很头疼,根本看不下去。
    我的建议是先跟着 CS143:Compilers 看视频和小测验(有字幕,需要英文读能力),楼上说的实践在这个课程的编程作业里也有,GitHub 上也很多答案。然后因为这里面倾向于给你梳理整体框架和概念,视频时长限制讲的也比较简单,并且英文可能也搞不清楚是哪些名词,所以就对照着龙书的章节,以书作为补充和名词翻译。
    另外要搞清楚学编译原理要干什么,有所侧重、不求甚解,比如我是需要了解语法分析相关,可能后面的 Java 虚拟机我就不需要很深入的学习。

    附课程网址: https://lagunita.stanford.edu/courses/Engineering/Compilers/Fall2014/course/
        6
    lincanbin   131 天前 via Android   ♥ 1
    看公开课
        7
    letianqiu   131 天前   ♥ 2
    龙书不适合入门,龙书对于前端虽然讲得很详细,但是内容安排有很大问题,不连贯,跳跃性很大。可以先看 engineering a compiler, 配合 http://www.craftinginterpreters.com/ 。谷歌的员工写的,代码质量很不错
        8
    hmzt   131 天前   ♥ 1
    知道词法分析和语义分析咋回事就行了,不是做编译器的没必要太深入,后面中间语言的生成和优化都可以不看
        9
    EricXuu   131 天前 via Android   ♥ 1
    可以用 flex 和 bison ( lec 和 yacc )写一个计算器,就能疏通一遍了
        10
    CTO   131 天前   ♥ 1
    同上,写个小 demo 理解编译器大致的流程就可以了
        11
    mggis0or1   131 天前 via Android
    之前学习逆向的时候看过王爽的汇编语言, 没有坚持下去。。
        12
    svenFeng   131 天前 via Android   ♥ 1
    人家是想学编译原理,不是想学 parser 原理,都答的啥啊。。。去看 eopl,在写各式各样的解释器就懂不少东西了,再挑喜欢的方向深入,比什么各种编译器书高多了
        13
    seraphv3   131 天前   ♥ 1
    大学时学过虎书 C 语言版本第一部分,在书的指导下做了一个 C 语言子集的编译器,架构都是按书上来的。按书上写了一个实现寄存器分配的后端,之后再没有遇到过什么程序比这个后端更复杂的。
    虎书 C 语言版的特色在于它的函数式风格的 C 语言代码,不管什么都用链表或树,完全不用数组;而且完全不使用变量,也就是说不会对一个标识符进行初始化赋值之外的赋值
        14
    hakono   131 天前 via Android
    如果我这时候说从计算机原理的自动机开始学会不会被打。。。。
        15
    FrankFang128   131 天前   ♥ 1
    神书:《计算的本质》
    你看了第一章就会回来谢我了。
        16
    FrankFang128   131 天前
    前面有一章讲 Ruby,那个不算第一章~
        17
    Heanes   131 天前   ♥ 1
    之前大学学编译原理,没学懂。。现在也想好好学一下
        18
    agagega   131 天前 via iPhone   ♥ 1
    陈火旺那个书就 tm 不是中文
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2414 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 22ms · UTC 13:44 · PVG 21:44 · LAX 06:44 · JFK 09:44
    ♥ Do have faith in what you're doing.