编译器和编程语言的鸡和蛋的问题

 对于哲学问题先有鸡还是先有蛋一直是人们争论的焦点,但是从语言学定义来说,没有鸡如何定义鸡蛋,然而不管是先有鸡蛋还是先有鸡,因为它们的循环依赖,导致了彼此的共生。

创新互联建站坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都做网站、网站设计、外贸营销网站建设、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的西安网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!

对于软件行业来说,编程语言和编译器就很类似鸡和鸡蛋的关系。

用编程语言写出了编译器,反过来用编译器对编程语言进行了编译。

表面上来看,编译器和编程语言是彼此依赖的,但是更高层面上来讲它们是不断进化的。一开始的编程语言不完善,写出的编译器也是不完整的,然后我们用不完整的编译器编译了编程语言,让它逐渐变得完整,同时我们又用变得完整的编程语言,写出了更加完整的编译器。

究竟谁是最先产生的?

对于这个问题,一定是现有的编程语言,因为最早的编程语言我们可以认为它们不需要编译,因为它们可以直接来操作硬件,所以应该是先有A编程语言,然后用A编程语言编写了一个编译器,这个编译器可以编译B语言,然后B编程语言可以自己编写出自己的编译器来编译自己。

自举

一个人再有力气也无法给自己举起来,但是在软件编程里面,编译语言却可以用自己编写的编译器编译自己,这就叫做自举。

完成自举的过程。

  • 用X语言把那个Y语言编译器写出来。
  • 用Y语言把编译器编写出来,用上面的编译器进行编译。
  • Y编译出来的编译器对Y进行编译,得到新的编译器。
  • 新的编译器进行用例测试,没问题的话,用Y语言写的新的编译器就可以对Y语言编译,实现编译器自举。

现实中的例子

做一个打铁工具,然后用这个打铁工具又可以做出打铁工具。

用编程语言写出编辑器,反过来再用编辑器去写编程语言。

有钱了去投资,投资之后有了钱再去投资。

总结

编译器本身是一种将一种语言翻译成另一种语言的工具,至于它本身是如何编写的,我们其实并不太关心,只要它可以准确快速地帮我们完成翻译的工作就可以了。

先有鸡还是先有蛋并不重要,重要的是我们既可以吃鸡,又可以吃鸡蛋。

文章名称:编译器和编程语言的鸡和蛋的问题
标题路径:http://www.stwzsj.com/qtweb/news6/12656.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联