我见过这样写的东西...... C 是用 C 写的,或者ABAP 是用 ABAP 写的..
我什至见过有人说这是将语言分类为真正的编程语言的标准之一。
我希望有人向我解释这意味着什么。
提前致谢。
编辑:将标题从:“ C 是使用 C 制作的”更改为“ C 是使用 C编译的”。
我见过这样写的东西...... C 是用 C 写的,或者ABAP 是用 ABAP 写的..
我什至见过有人说这是将语言分类为真正的编程语言的标准之一。
我希望有人向我解释这意味着什么。
提前致谢。
编辑:将标题从:“ C 是使用 C 制作的”更改为“ C 是使用 C编译的”。
你从汇编开始,你制作了第一个版本,并且总是可以用以前的版本编写一个新版本的编译器。
您不需要编译器即可启动用其语言编写的编译器。您只需要为 C 子集编写一个解释器。然后你使用这个子集来增强它。
在 C 语言被发明的时候(大约 1967 年),除了 Brian Kerninghan 和 Dennis Ritchie 之外,没有人认为用高级语言编写编译器或操作系统是一个理智的想法。事实证明他们是对的!
这意味着 C 编译器是用 C 编写的。
最初,这是一个问题,因为如果 C 还没有编译器,你怎么能用 C 编写编译器。
更新:
如果您用不同的语言编写编译器,人们会问自己,该语言是否过于受限而无法构建编译器,或者该语言的发明者是否不相信他们的语言而更喜欢另一种语言。
但是用不同的语言编写编译器是有充分理由的。
编译器是相对复杂的程序,所以有时人们认为编写类似编译器的东西的能力表明计算机语言有足够的能力编写复杂的程序——即“真正的”编程语言。
编译器不必使用与编译相同的语言编写。例如,如果使用 C 编写 Pascal 编译器,它仍然满足(有点不科学的)C 是真正的编程语言的测试。
显然,要进行测试,必须有功能不足以编写编译器的计算机语言 - 或者它可能非常复杂/复杂以至于甚至没有尝试过。某些 4GL、某些脚本语言或专用语言(你能用 LISP 编写编译器吗?我不知道……)可能属于这一类。
如前所述,这绝不是对语言的“科学”测试。它最初只是为了营销而出现的。不过也有一些小好处——编译器、操作系统和实用程序用同一种语言编写意味着您可以用一种语言拥有一个完整的编程环境,大大简化了维护。Unix 和 C 是“纯 C”环境的第一个很好的例子。
这并不意味着什么。像这样的陈述不能真正应用于整个语言,只能应用于它的特定实现。例如,C 编译器的代码很可能是用 C 编写的。
我建议对“真实语言”的真正测试是它是否是图灵完备的。解释语言同样是真正的语言,但你不能用解释语言编写解释器,这可能是你的“一个人”所指的。(实际上你可以,但是你需要原来的解释器来运行新的解释器,几代之后它会变得非常缓慢和庞大)。