当前位置: 首页 > 科技观察

编译器和编程语言的先有鸡还是先有蛋的问题

时间:2023-03-21 01:55:31 科技观察

鸡和蛋一直是哲学问题争论的焦点,但从语言学的定义来看,没有鸡又如何定义蛋呢?先有鸡后有蛋,因为它们循环依赖,导致相互共生。对于软件行业来说,编程语言和编译器就像先有鸡还是先有蛋。编译器是用编程语言编写的,编译器又用来编译编程语言。从表面上看,编译器和编程语言相互依赖,但在更高的层次上它们是在不断进化的。一开始编程语言并不完善,我们写的编译器也不完善。然后我们用不完整的编译器编译编程语言,使其逐渐完善。同时,我们使用完整的编程语言编写了一个更完整的编译器。谁最先生产?对于这个问题,肯定是现有的编程语言,因为我们可以认为最早的编程语言是不需要编译的,因为它们可以直接操作硬件,所以应该先有一种编程语言,然后再写一个编译器在A编程语言中,它可以编译B语言,然后B编程语言可以编写自己的编译器来编译自己。Bootstrapping一个人再强也不能自拔,但是在软件编程中,编译型语言可以用自己写的编译器编译自己,这就叫做bootstrapping。完成引导过程。用X语言写那个Y语言的编译器。使用Y语言编写编译器,使用上面的编译器进行编译。Y编译的编译器对Y进行编译,得到一个新的编译器。新的编译器用于测试用例。如果没有问题,用Y语言编写的新编译器可以编译Y语言并实现编译器自举。现实中的一个例子制作一个铁匠工具,然后用这个铁匠工具制作一个铁匠工具。用一种编程语言编写一个编辑器,然后再用一个编辑器编写一种编程语言。有钱就投资,有钱就投资。总结编译器本身就是一种将一种语言翻译成另一种语言的工具。至于怎么写,我们其实并不太在意,只要能帮助我们准确快速地完成翻译工作即可。.先有鸡还是先有蛋并不重要。重要的是我们可以同时吃鸡和鸡蛋。