You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

维基百科将Java、Python列入自举编译语言?为何javac、CPython基于C实现?

为什么Java和Python会被列入编译器自举语言列表?

这个问题问得很到位,很多人都会把「语言是否支持自举」和「某款主流实现的编写语言」搞混,咱们拆开来说清楚:

先搞懂核心:自举的对象是「语言」,不是「某款特定实现」

编译器自举的本质是:用语言X本身编写一个能处理X的编译器/解释器,并且这个工具可以编译/解释它自己的源码,形成完整的自举循环。判断一种语言是否能自举,看的是「是否存在这样的自举实现」,而不是看当前最流行的那款实现是不是用别的语言写的。

关于Java:主流编译器早已完成自举

  • 早期的javac确实是用C语言实现的,但早在JDK 1.2版本之后,Sun(后来的Oracle)就把javac完全重写成了Java代码。现在OpenJDK里的javac就是纯Java实现的——你可以用现有的javac编译javac的源码,直接得到一个全新的javac编译器,这就是标准的自举流程。
  • 除此之外,还有Eclipse的ECJ编译器(Eclipse Compiler for Java),也是纯Java实现的,同样可以完成自举。所以Java作为语言,完全具备自举能力,自然会被列入列表。

关于Python:存在自举实现,语言本身支持自举

  • 虽然CPython(最流行的Python实现)是用C写的,但Python有不少用自身(或其子集)实现的解释器/编译器:
    • PyPy:它的核心翻译器是用RPython(Python的一个静态类型子集)编写的,而RPython代码可以用PyPy自己来编译,形成完整的自举循环。PyPy本身就是能运行Python代码的解释器,它的构建过程完全可以通过自举完成。
    • 甚至你自己都能用Python写一个简单的Python解释器(比如递归下降解释器),只要这个解释器能正确处理它自己的源码,就满足了自举的核心逻辑。
  • 维基百科的列表关注的是语言本身的能力,而非某一款实现的技术栈,所以Python也符合自举语言的标准。

内容的提问来源于stack exchange,提问作者saga

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:49:20