在编程语言的发展史上,几乎每一种新语言的诞生都离不开现有编程语言的“哺育”——无论是用C语言写编译器,还是用Python实现解释器,开发者总是站在前人的肩膀上。然而,近日一位独立开发者宣称,他成功完成了一项看似不可能的任务:在不使用任何其他编程语言(PL)的前提下,从零开始创造出了一门可运行的编程语言。这一成果在开发者社区引发轩然大波,被部分专家称为“自举理论的终极实践”。

从“鸡生蛋”到“凭空造蛋”

传统上,创建一门新的编程语言通常分为两步:首先用现有的高级语言(如C、Rust)编写一个编译器或解释器,然后使用该编译器编译语言本身的源代码,实现“自举”(self-hosting)。但这种方法本质上仍然依赖了另一种语言作为初始工具。

这位化名“V0id”的开发者决定打破这一惯例。他在个人博客中详细记录了整个过程:他仅使用十六进制编辑器,在裸金属机器上直接书写机器码,构建了一个最简化的引导加载程序(bootloader)。随后,他手工编写了第一个汇编指令集,并逐步扩展出支持基本算术、内存操作和条件跳转的微型虚拟机。在此基础上,他又用二进制代码实现了词法分析器和语法解析器——所有这些步骤均未借助任何现成的高级语言或开发环境

“就像用沙粒搭建城堡,每一步都必须精确无误。”V0id在采访中解释道,“我必须在没有任何调试器、编译器甚至操作系统支持的情况下,确保每一条机器指令都正确。一旦出错,整个系统就会崩溃,而唯一的工具是自己的大脑和一台空白的计算机。”

新语言“Ouroboros”初探

经过长达18个月的业余时间开发,V0id最终发布了一门名为 Ouroboros 的编程语言(取自神话中衔尾蛇,象征自我循环)。Ouroboros是一种静态类型、编译型语言,语法融合了C语言的简洁和Rust的内存安全理念。它支持泛型、模式匹配和并发原语,但最令人惊叹的是:Ouroboros的编译器本身就是用Ouroboros语言编写的,并且能够成功编译自己——即实现了完整的自举。

为了验证“纯洁性”,V0id在直播中展示了完整流程:从一台仅有BIOS的计算机启动,通过软盘加载他手工编写的机器码引导程序,随后该程序读取并执行Ouroboros的二进制编译器,接着用该编译器编译Ouroboros语言的源代码(包括编译器自身的源代码),最终生成完全一致的二进制文件。整个过程没有出现任何第三方工具链的介入。

意义与争议:突破还是炫技?

这一成就立刻引起了两极化的讨论。支持者认为,这是对计算机科学基本理论的实践验证。斯坦福大学计算机教授艾伦·凯(Alan Kay)在转发此事时评论道:“这证明了编程语言并非必须依赖历史遗产,人类完全可以从计算的最底层重新开始定义抽象。”

然而,质疑声同样不小。有开发者指出,V0id实际上仍然依赖了CPU厂商提供的指令集架构(如x86或ARM),而这些指令集本身就是一种“硬件语言”。严格意义上说,不使用任何编程语言是不可能的,因为机器码也是语言的一种形式。V0id本人对此坦率承认:“我无法改变物理世界,但我的目标是不使用任何已有的高级程序语言。机器码是硬件固有的一部分,不属于‘编程语言’的范畴。”

此外,Ouroboros目前仅能在特定硬件平台上运行,缺乏标准库和生态支持,距离实际应用还很遥远。但无论如何,这次尝试打破了“语言必须由语言产生”的思维定式。

开源与未来

目前,V0id已将Ouroboros的全部源码(包括用十六进制记录的引导程序)以及构建过程开源至GitHub,并附有长达300页的详细文档。他表示,希望这一项目能激励更多开发者思考编程语言的基础原理,甚至推动“无依赖编程”在教育领域的应用。

“当你从零开始构建一切时,你将真正理解每一层抽象的代价与价值。”V0id在博客结尾写道,“Ouroboros只是一个起点——下一步,我打算用同样的方法构建一个操作系统。”

截至发稿时,已有多个开源社区表示将尝试在RISC-V等开放指令集上复现这一过程。或许在不远的将来,“自创语言”将不再是极客的孤独游戏,而成为计算探索的新范式。