一门新编程语言是如何完成自举的?
2 个回答
你是一个铁匠,专门给木匠提供生产工具的铁匠。
有一天你觉得你目前的工具制造工艺精度太低、效率不够高,于是你决定发明机床替代打铁和手工制作木制零件。
你手工用木头和铁制作了一个简单粗糙的手动机床。
有了这台机床之后你给木匠制作工具的效率明显提高了。但是用了一段时间之后,你发现这台机床的设计还是有一些不足,于是你决定开发第二版机床。
把设计图画好之后你开始动手了。这次你决定不用打铁削木头的方式制造第二版机床,而是用已经制作好的第一版机床制作大部分第二版机床的零件,只有小部分用第一代机床制作不出来的零件你手工制作。
第二代机床制作好之后你越用越顺手,越来越多的木匠开始用你用机床生产的工具。为了提升效率你决定开发第三代机床。
因为第二代机床的设计比第一代机床更完善,你发现生产第三代机床的所有零件都可以直接用第二代机床制作。于是你用第二代机床生产了第三代机床。
恭喜,你达成了机床自举。
通常来说,一门新的编译型语言是用其他的语言(例如C或者C++)写好最初的一个版本,逐步完善后再用自己重写自己。C语言是这样出来的,Rust也不例外。解释型语言如Python是用C语言写的,JAVA是C++写的,这类语言就用不着自举了。
查了下Rust的wiki https://zh.wikipedia.org/wiki/Rust
Rust是由Mozilla[11]主导开发的通用、编译型编程语言。设计准则为“安全、并发、实用”,[12][13]支持函数式、并发式、过程式以及面向对象的编程风格。
Rust 语言原本是 Mozilla 员工 Graydon Hoare 的私人项目,而 Mozilla 于 2009 年开始赞助这个项目[14],并且在 2010 年首次揭露了它的存在[15]。也在同一年,其编译器源代码开始由原本的 OCaml 语言转移到用 Rust 语言,进行 bootstrapping 工作,称做 rustc[16],并于 2011 年实际完成[17]。这个可自我编译的编译器在架构上采用了 LLVM 做为它的后端。
第一个有版本号的 Rust 编译器于 2012 年 1 月发布。[18] Rust 1.0 是第一个稳定版本,于 2015 年 5 月 15 日发布。[19]
Rust 最初的版本是由 OCaml 语言写的,2011年实现的自举。