Zhonghui

每个不曾起舞的日子,都是对生命的辜负

User Tools

Site Tools


程序:编译原理:自举

编程语言的自举

Python: PyPy
Go: 从1.5开始,Go的编译器使用Go自己实现(大概是1.5吧,不太确定版本)


什么是自举?[AI]

Q:什么是编程语言的「自举」?

编程语言的「自举」(bootstrapping)是指用一种编程语言自己来实现自己,通常是指该语言的编译器或解释器是用该语言自身编写的。

举个例子:

假设有一种语言叫做 LangX

  • 最初,LangX 还不能运行自己写的程序,所以你可能要用 C、Python 等已有语言来写一个最初的 LangX 编译器(称为 引导编译器)。
  • 当 LangX 的编译器足够成熟后,你就可以用 LangX 自己来写或重写这个编译器。
  • 然后,你就可以用 旧版编译器来编译这个用 LangX 写的新编译器。这就是“自举”。

为什么自举很重要?

  1. 验证语言能力:能实现自举说明这门语言本身已经足够强大和自洽。
  2. 维护方便:使用该语言自身编写工具,可以减少依赖其他语言。
  3. 优化自身:更容易为该语言的编译器做优化和更新。
  4. 社区信任:很多主流语言都追求自举,如 C、Rust、Go、Lisp、Haskell 等。

举例说明

  • C语言:最初的 C 编译器是用汇编语言写的。后来,C 变得强大后,C 的编译器本身也用 C 来实现了。
  • Rust:Rust 的编译器 rustc 是用 Rust 本身编写的,并使用 LLVM 做后端支持。
  • Lisp:最早使用自解释结构,Lisp 系统可以用 Lisp 自己定义和扩展语言本身。

总结一句话:

编程语言的自举就是它“能够靠自己养活自己”——用自己来构建自己,是语言成熟的重要标志。

/var/www/DokuWikiStick/dokuwiki/data/pages/程序/编译原理/自举.txt · Last modified: 2025/07/21 06:56 by zhonghui