一步步前进的重要性(兼谈编译器的自举)

本文深入探讨了如何通过自举法构建高效且稳定的编译器,从基础功能编译器开始,利用自身语言逐步优化,确保每次迭代的正确性和稳定性,最终达到高性能编译器的目标。强调了正确性优先的重要性,以及在迭代过程中如何有效管理和区分优化和功能代码的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

     这一段在一段代码的基础上开发一个增量的小功能,在过程中总是忍不住不成熟程序员的习惯冲动---不由自主地进行东一优化、西一棒子,到最后增量的小功能联调就卡壳的时间比较长。因为修改地方比较多,分辨不出来到底是优化的代码出现了问题,还是增量功能的代码出现了问题。由于当时此功能ld催的又很急,但是却又交不出来,当时那个后悔啊。。。。,悔不该如此费时费力。

   痛定思痛,想到了编程语言和编译器技术中“自举”,其实也是一个增量开发,尽量先保证正确性,后来通过多次自举,编译出来一个成熟和稳定的编译器出来。

  它的过程是这样的:我们先假设,利用一门已经存在编译器的语言,如果不存在的话,恐怕要第一次手工劳作了。但通常从历史发展来看,即使是手工劳作,最开始的语言一般都较简单,即使手工机器代码直接编写出编译器程序,也不是件非常难的事情。因为是机器代码,首先是程序,也是直接可以运行的代码!

   从已经存在编译器的语言开始,我们先为新语言撰写一个最基础功能的编译器程序。这个“太初”编译器(程序)只用保证正确性,可以是未优化和低效的。有了新语言的编译器后,我们可以利用新语言强大的语言能力,再次用新语言撰写新版的编译器程序。注意此处使用到的是自身语言,用自身语言来实现自己的编译器。通过“太初”编译器编译新语言的编译器程序后,我们就获得了功能和性能会更强一点的编译器。我们可以不断地重复此过程,最后会出现一个编译质量非常好的编译器出来:)

   很多时候,正确性往往是第一步和重要的。只有在此次基础上展开任何优化,都有一个正确的基础和可以检验,以及控制复杂度的。至少我可以回退到最初,就是一个可用的东西给“客户”。

     这是非常重要的一种编程习惯,后面可以吸取

  

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值