请教老师一个关于语言编译器自举的问题

来源:11-5 垃圾回收算法选讲——基于引用计数的内存回收算法

Osuribaba

2020-12-14

请教一下老师,有些语言的编译器是自举的就比如 go 这种语言,我发现它的编译器也是用 go写的,感觉有点像是鸡生蛋,蛋生鸡的问题。所以我想问下,某些像这种能够自举的语言,是不是还是需要别的语言实现的编译器编译一遍才能自举?
举个例子,比如说,假设现在有门语言叫做“X”,X 语言的编译器最初是用 C 写的,然后 X 语言成熟了之后,用 X 实现了 X 自己的编译器,那我在真正在用 X 编译 X 的代码之前,是不是还是要先用 C 语言把 “X 实现的 X 的编译器” 给编译成机器码,然后才能用这些机器码去跑一个用 X 语言写的程序?

写回答

1回答

求老仙

2020-12-23

一般是先用底层语言实现个简版。然后简版跑起来后就用自己的语言丰富生态。主要是自举过程中需要设计的类型 帮助方法,数据结构,。。用户也要用。而且构造语言就像构造属于自己的王国一样,除非遇到自己语言解决不了的问题,谁愿意假手其他语言呢?

0
0

大学计算机必修课新讲--编译原理+操作系统+图形学

轻松超越大学课程,前阿里P8专家的实践精华总结

1752 学习 · 157 问题

查看课程