11

好的,所以我知道,通常情况下,一种语言是用另一种语言编写的(例如 Python 是用 C 编写的)。

但是,有没有一种语言是使用自己编写的?显然,他们必须使用该语言先前版本的编译器/解释器,这意味着,至少在最初,它应该是用其他东西编写的。

我意识到使用现有语言为新语言开发编译器会非常烦人且毫无意义,只是立即放弃它并用您的新语言编写新编译器(然后您将使用原始编译器进行编译),但是我真的看不出它不能完成的原因(不过,我再次明白为什么它不能完成)。

尽管如此,它曾经发生过吗?

4

1 回答 1

14

是的,它被称为Bootstrapping

在计算机科学中,自举是用要编译的目标编程语言编写编译器(或汇编器)的过程。应用这种技术会导致一个自托管编译器。许多编程语言的许多编译器都是自举的,包括 BASIC、ALGOL、C、Pascal、PL/I、Factor、Haskell、Modula-2、Oberon、OCaml、Common Lisp、Scheme、Java、Python、Scala 等编译器。

于 2013-09-18T01:54:21.310 回答