我见过这样写的东西...... C是用C 编写的,或者 ABAP是用ABAP编写的 ..
我甚至看到one guy说这是将语言分类为 true 编程语言的标准之一。
我希望有人向我解释这意味着什么。
提前致谢。
编辑:更改标题:“ C是使用C ”来“ C 已编译使用C ”。
答案 0 :(得分:12)
您从汇编开始,您创建了第一个版本,并且始终可以使用以前的版本编写新版本的编译器。
您不需要编译器来启动用其语言编写的编译器。您只需要为C子集编写解释器。然后使用此子集来增强它。
在C发明时(大约1967年),除了Brian Kerninghan和Dennis Ritchie之外,没有人认为用高级语言编写编译器或操作系统是一个理智的想法。事实证明他们是对的!
答案 1 :(得分:9)
这意味着C编译器是用C语言编写的。
最初,这是一个问题,因为如果C还没有编译器,你怎么能用C编写编译器。
<强>更新强>
如果你用不同的语言编写一个编译器,人们会问自己这种语言对于构建编译器是否太有限,或者该语言的发明者是否不相信他们的语言并且更喜欢另一种语言。
但是用不同的语言编写编译器是有充分理由的。
答案 2 :(得分:1)
编译器是相对复杂的程序,因此有时会假设编写类似编译器的能力表明计算机语言具有足够的能力来编写复杂的程序 - 即&#34; true&#34;编程语言。
编译器不必使用与编译时相同的语言编写。例如,如果使用C编写Pascal编译器,它仍然满足(有点非科学)测试,即C是一种真正的编程语言。
显然,要进行测试,必须有不足以编写编译器的计算机语言 - 或者它可能是如此复杂/复杂,甚至没有尝试过。一些4GL,某些脚本语言或专业语言(你能在LISP中编写编译器吗?我不知道......)可能属于这一类。
如上所述,这绝不是一个科学的&#34;测试语言。它最初只用于营销。虽然有一些轻微的好处 - 拥有一个编译器,O / S和用同一种语言编写的实用程序意味着你可以用一种语言拥有一个完整的编程环境,大大简化了维护。 Unix和C是&#34; C-only&#34;环境。
答案 3 :(得分:0)
这并不意味着什么。像这样的语句不能真正应用于整个语言,只是它的具体实现。例如,C编译器的代码很可能用C语言编写。
答案 4 :(得分:0)
我建议“真实语言”的 true 测试是否为Turing complete。解释语言同样是真正的语言,但你不能用解释语言编写解释器,这可能是你的“一个人”所指的。 (实际上你可以,但是你需要现有的解释器才能运行新的解释器,几代后它会非常缓慢而且很大。)