1
546L5LiK6ZOt 2023-12-11 15:46:28 +08:00 2
|
2
timewarp 2023-12-11 15:51:51 +08:00
《编译器设计》
|
3
Jeff710 2023-12-11 16:14:12 +08:00 2
书没啥用,基本概念了解下直接学 LLVM, 可以跟着多伦多大学 CSCD70 这门课学,https://uoft-ecosystem.github.io/CSCD70/
|
4
Chingim 2023-12-11 16:16:37 +08:00
|
5
aminobody 2023-12-11 16:19:03 +08:00
学编译原理 ✖
学 LLVM ✔ |
6
zen1 2023-12-11 16:21:56 +08:00
记得上学的时候比较有名的是:龙书、虎书、鲸书。具体对应名字 google 下应该就有
|
7
MoYi123 2023-12-11 16:29:44 +08:00
《 WritingAnInterpreterInGo 》 可以跟着写的, 只有英文版.
|
8
manning 2023-12-11 16:36:35 +08:00
|
9
asm 2023-12-11 16:51:02 +08:00
同没学过,就是想大概了解下不求多深的深度,搜过什么龙书,看厚度都头疼。最近看《用 go 语言自制解释器》,刚开头,感觉还不错。
|
10
ninjashixuan 2023-12-11 16:58:11 +08:00
@MoYi123 这个中文版也出了
|
11
jones2000 2023-12-11 17:02:56 +08:00
编译原理 机械工业出版社
计算机专业都“编译原理”课程的。 |
12
hitmanx 2023-12-11 17:06:36 +08:00
<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 |
13
hitmanx 2023-12-11 17:08:07 +08:00
@hitmanx 日本人写的这本找到了: https://book.douban.com/subject/25908672/ <两周自制脚本语言>
|
14
xtreme1 2023-12-11 17:29:54 +08:00
主要是你想侧重前端还是后端(对大部分人来说最有用的也是前端), 前者你就看楼上推荐那些书, 后者就学 LLVM.
|
15
jorneyr 2023-12-11 17:30:07 +08:00
编译原理:搜索 龙书
|
16
SmiteChow 2023-12-11 18:09:18 +08:00
不用看书,直接看库,如果你的目标是脚本语言,那只看编译前端的 antlr4 就够了,如果需要编译成二进制可执行文件在额外看 llvm
|
17
ShadowPower 2023-12-11 18:53:44 +08:00
《两周自制脚本语言》
|
18
xuedishang 2023-12-11 18:57:24 +08:00
这个 blog https://ruslanspivak.com/lsbasi-part1/ 挺好的,可以作为入门,了解编译原理的基本概念,自己动手实现一个简单的编译器
|
19
sjtulyj 2023-12-11 18:59:58 +08:00
|
20
slack 2023-12-11 19:16:28 +08:00
不推荐看《编译原理》,可以看看《编程语言实现模式》,结合 antlr ,yacc 之类的做一个 parser 差不多了
|
21
DianQK 2023-12-11 19:24:19 +08:00 via Android
建议好好看书,入门 https://craftinginterpreters.com/ 。这里有很多可以做的事情,接下来看啥得看你想做什么。如果是感兴趣了解,前面入门我觉得也够了。
我的目标是贡献 LLVM/Rust ,我看的是: - 南京大学的程序分 https://tai-e.pascal-lab.net/lectures.html - LLVM Techniques, Tips, and Best Practices Clang and Middle-End Libraries - 龙书 (还有些别的,但我觉得这些够看蛮久的,其他的方向就不懂了 |
22
enchilada2020 2023-12-11 19:31:01 +08:00 via Android
一个问题 这种屠龙技学完用来干什么呢?或者说是出于什么目的才去学的
|
23
leave8426 2023-12-11 19:58:14 +08:00
essentials of compilation, 有 Python 版本, 写一个 mini Python, 基本不太讲前端的内容. https://github.com/IUCompilerCourse/Essentials-of-Compilation
|
24
sbw 2023-12-12 08:20:41 +08:00 via Android
我司在招传统编译器开发、测试,base 西安深圳苏州南京有意可 sbw at sbw dot so
|
25
milanxiaoge 2023-12-12 09:18:54 +08:00
@sbw #24 汇川是不是要求比较高 T_T
|
26
sbw 2023-12-12 11:49:36 +08:00 via Android
@milanxiaoge 主要工作方向上满足要求即可,也是根据能力定级的
|
27
liyafe1997 2023-12-12 20:41:53 +08:00 1
这是我们学校的一门课,叫 Compiler construction ,挺有意思的,去年刚上过。所有课程资料包括实验都在这个 github repo 里: https://github.com/TDA283-compiler-construction/project
大概就是老师 YY 了一种语言叫 Javalettet (别误会,跟 Java 没半毛钱关系,实际我感觉更像个简化的 C ),语法规则啥的里面都介绍有,bnfc 的 cf 语法文件也给你写好了 按着实验要求做就行,就是实现这个 Javalettet 的编译器,最低要求是输出 LLVM 的代码(及格分)。如果想加分,得整点花活,比如生成其它平台比如 x86 的代码,或者加入面向对象功能,等等等等。 我当时做这个感觉收获颇多,至少是第一次自己完整实现一个编译器,知道了这些东西大概怎么一回事。如果你有兴趣也可以按着这个 project 要求跟着做。 |
28
liyafe1997 2023-12-12 20:42:53 +08:00
@liyafe1997 如果你有兴趣,我也可以把我当时 project 的代码 share 给你
|