• 请不要在回答技术问题时复制粘贴 AI 生成的内容
myJourney
V2EX  ›  程序员

以前没有学习过编译原理,最近想了解一下请问有什么推荐的书吗,最好能够跟着写的

  •  3
     
  •   myJourney · Dec 11, 2023 · 5805 views
    This topic created in 1062 days ago, the information mentioned may be changed or developed.
    28 replies  •  2023-12-12 20:42:53 +08:00
    aGVsbG93b3JsZA
    aGVsbG93b3JsZA
    Dec 11, 2023❤️2
    1
    timewarp
    timewarp
    Dec 11, 2023
    2
    《编译器设计》
    Jeff710
    Jeff710
    Dec 11, 2023❤️2
    3
    书没啥用,基本概念了解下直接学 LLVM, 可以跟着多伦多大学 CSCD70 这门课学,https://uoft-ecosystem.github.io/CSCD70/
    aminobody
    aminobody
    Dec 11, 2023
    5
    学编译原理 ✖
    学 LLVM ✔
    zen1
    zen1
    Dec 11, 2023
    6
    记得上学的时候比较有名的是:龙书、虎书、鲸书。具体对应名字 google 下应该就有
    MoYi123
    MoYi123
    Dec 11, 2023
    7
    《 WritingAnInterpreterInGo 》 可以跟着写的, 只有英文版.
    asm
    asm
    Dec 11, 2023
    9
    同没学过,就是想大概了解下不求多深的深度,搜过什么龙书,看厚度都头疼。最近看《用 go 语言自制解释器》,刚开头,感觉还不错。
    ninjashixuan
    ninjashixuan
    Dec 11, 2023
    10
    @MoYi123 这个中文版也出了
    jones2000
    jones2000
    Dec 11, 2023
    11
    编译原理 机械工业出版社

    计算机专业都“编译原理”课程的。
    hitmanx
    hitmanx
    Dec 11, 2023
    12
    <Brich Hansen on Pascal Compilers>
    <Stack Computers>
    <Crafting Interpreters>
    <Engineering a Compiler>
    <Writing Compilers and Interpreters>
    <Write Yourself a Scheme in 48 Hours>

    有几本是上古的书,但是比起新的书写得都很好,很详细很入门,实操性强。
    还有个日本人写的书,名字忘了。也是从头开始写 interpreter 。图灵出版社的。

    另外推一下 Stanford 的 CS143(编译原理)这门课,b 站有公开课的视频。可能是最入门的资料了:https://www.bilibili.com/video/BV1NE411376V/?p=4
    hitmanx
    hitmanx
    Dec 11, 2023
    13
    @hitmanx 日本人写的这本找到了: https://book.douban.com/subject/25908672/ <两周自制脚本语言>
    xtreme1
    xtreme1
    Dec 11, 2023
    14
    主要是你想侧重前端还是后端(对大部分人来说最有用的也是前端), 前者你就看楼上推荐那些书, 后者就学 LLVM.
    jorneyr
    jorneyr
    Dec 11, 2023
    15
    编译原理:搜索 龙书
    SmiteChow
    SmiteChow
    Dec 11, 2023
    16
    不用看书,直接看库,如果你的目标是脚本语言,那只看编译前端的 antlr4 就够了,如果需要编译成二进制可执行文件在额外看 llvm
    ShadowPower
    ShadowPower
    Dec 11, 2023
    17
    《两周自制脚本语言》
    xuedishang
    xuedishang
    Dec 11, 2023
    18
    这个 blog https://ruslanspivak.com/lsbasi-part1/ 挺好的,可以作为入门,了解编译原理的基本概念,自己动手实现一个简单的编译器
    slack
    slack
    Dec 11, 2023
    20
    不推荐看《编译原理》,可以看看《编程语言实现模式》,结合 antlr ,yacc 之类的做一个 parser 差不多了
    dianqk
    dianqk
    Dec 11, 2023 via Android
    21
    建议好好看书,入门 https://craftinginterpreters.com/ 。这里有很多可以做的事情,接下来看啥得看你想做什么。如果是感兴趣了解,前面入门我觉得也够了。
    我的目标是贡献 LLVM/Rust ,我看的是:
    - 南京大学的程序分 https://tai-e.pascal-lab.net/lectures.html
    - LLVM Techniques, Tips, and Best Practices Clang and Middle-End Libraries
    - 龙书
    (还有些别的,但我觉得这些够看蛮久的,其他的方向就不懂了
    KMpAn8Obw1QhPoEP
    KMpAn8Obw1QhPoEP
    Dec 11, 2023 via Android
    22
    一个问题 这种屠龙技学完用来干什么呢?或者说是出于什么目的才去学的
    leave8426
    leave8426
    Dec 11, 2023
    23
    essentials of compilation, 有 Python 版本, 写一个 mini Python, 基本不太讲前端的内容. https://github.com/IUCompilerCourse/Essentials-of-Compilation
    sbw
    sbw
    Dec 12, 2023 via Android
    24
    我司在招传统编译器开发、测试,base 西安深圳苏州南京有意可 sbw at sbw dot so
    testttttt
    testttttt
    Dec 12, 2023
    25
    @sbw #24 汇川是不是要求比较高 T_T
    sbw
    sbw
    Dec 12, 2023 via Android
    26
    @milanxiaoge 主要工作方向上满足要求即可,也是根据能力定级的
    liyafe1997
    liyafe1997
    Dec 12, 2023❤️1
    27
    这是我们学校的一门课,叫 Compiler construction ,挺有意思的,去年刚上过。所有课程资料包括实验都在这个 github repo 里: https://github.com/TDA283-compiler-construction/project
    大概就是老师 YY 了一种语言叫 Javalettet (别误会,跟 Java 没半毛钱关系,实际我感觉更像个简化的 C ),语法规则啥的里面都介绍有,bnfc 的 cf 语法文件也给你写好了
    按着实验要求做就行,就是实现这个 Javalettet 的编译器,最低要求是输出 LLVM 的代码(及格分)。如果想加分,得整点花活,比如生成其它平台比如 x86 的代码,或者加入面向对象功能,等等等等。
    我当时做这个感觉收获颇多,至少是第一次自己完整实现一个编译器,知道了这些东西大概怎么一回事。如果你有兴趣也可以按着这个 project 要求跟着做。
    liyafe1997
    liyafe1997
    Dec 12, 2023
    28
    @liyafe1997 如果你有兴趣,我也可以把我当时 project 的代码 share 给你
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1682 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 86ms · UTC 04:04 · PVG 12:04 · LAX 20:04 · JFK 23:04
    ♥ Do have faith in what you're doing.