编程语言的自举
Python: PyPy
Go: 从1.5开始,Go的编译器使用Go自己实现(大概是1.5吧,不太确定版本)
什么是自举?[AI]
Q:什么是编程语言的「自举」?
编程语言的「自举」(bootstrapping)是指用一种编程语言自己来实现自己,通常是指该语言的编译器或解释器是用该语言自身编写的。
举个例子:
假设有一种语言叫做 LangX:
最初,LangX 还不能运行自己写的程序,所以你可能要用 C、Python 等已有语言来写一个最初的 LangX 编译器(称为 引导编译器)。
当 LangX 的编译器足够成熟后,你就可以用 LangX 自己来写或重写这个编译器。
然后,你就可以用 旧版编译器来编译这个用 LangX 写的新编译器。这就是“自举”。
为什么自举很重要?
验证语言能力:能实现自举说明这门语言本身已经足够强大和自洽。
维护方便:使用该语言自身编写工具,可以减少依赖其他语言。
优化自身:更容易为该语言的编译器做优化和更新。
社区信任:很多主流语言都追求自举,如 C、Rust、Go、Lisp、Haskell 等。
举例说明
C语言:最初的 C 编译器是用汇编语言写的。后来,C 变得强大后,C 的编译器本身也用 C 来实现了。
Rust:Rust 的编译器 rustc 是用 Rust 本身编写的,并使用 LLVM 做后端支持。
Lisp:最早使用自解释结构,Lisp 系统可以用 Lisp 自己定义和扩展语言本身。
总结一句话:
编程语言的自举就是它“能够靠自己养活自己”——用自己来构建自己,是语言成熟的重要标志。