一步步前进的重要性(兼谈编译器的自举)
来源:互联网 发布:淘宝卖家账号 编辑:程序博客网 时间:2024/06/02 15:00
这一段在一段代码的基础上开发一个增量的小功能,在过程中总是忍不住不成熟程序员的习惯冲动---不由自主地进行东一优化、西一棒子,到最后增量的小功能联调就卡壳的时间比较长。因为修改地方比较多,分辨不出来到底是优化的代码出现了问题,还是增量功能的代码出现了问题。由于当时此功能ld催的又很急,但是却又交不出来,当时那个后悔啊。。。。,悔不该如此费时费力。
痛定思痛,想到了编程语言和编译器技术中“自举”,其实也是一个增量开发,尽量先保证正确性,后来通过多次自举,编译出来一个成熟和稳定的编译器出来。
它的过程是这样的:我们先假设,利用一门已经存在编译器的语言,如果不存在的话,恐怕要第一次手工劳作了。但通常从历史发展来看,即使是手工劳作,最开始的语言一般都较简单,即使手工机器代码直接编写出编译器程序,也不是件非常难的事情。因为是机器代码,首先是程序,也是直接可以运行的代码!
从已经存在编译器的语言开始,我们先为新语言撰写一个最基础功能的编译器程序。这个“太初”编译器(程序)只用保证正确性,可以是未优化和低效的。有了新语言的编译器后,我们可以利用新语言强大的语言能力,再次用新语言撰写新版的编译器程序。注意此处使用到的是自身语言,用自身语言来实现自己的编译器。通过“太初”编译器编译新语言的编译器程序后,我们就获得了功能和性能会更强一点的编译器。我们可以不断地重复此过程,最后会出现一个编译质量非常好的编译器出来:)
很多时候,正确性往往是第一步和重要的。只有在此次基础上展开任何优化,都有一个正确的基础和可以检验,以及控制复杂度的。至少我可以回退到最初,就是一个可用的东西给“客户”。
这是非常重要的一种编程习惯,后面可以吸取
- 一步步前进的重要性(兼谈编译器的自举)
- 编译原理--编译器的自举与移植
- 编译器自举
- 编译器之自举
- 编译器自举笔记
- 编译器的重要性
- 编译器自举和移植
- 前进与停留--软件设计模型的重要性
- 关于"IR21"的自举电路
- 语言自举的哲学思考
- 编译器"自举与移植"原理
- 编译器实践的重要性-专家评说
- DSP的自举引导方法的应用研究
- 自举?只不过是电容和二极管捣的乱
- Google公布实现Go 1.5自举的计划
- Google公布实现Go 1.5自举的计划
- 自举
- 自举
- 习题2-3,韩信点兵
- java 汉字字典,获取汉字拼音,拼音首字母,五笔,笔画,笔画顺序
- 标准库容器 vector中 string的字符处理。
- Lucene 3.5最新版 在2011-11-26日发布了
- UVA 10723 Cyborg Genes
- 一步步前进的重要性(兼谈编译器的自举)
- UVA 662 Fast Food
- [Cocos2d-x] 安卓返回键的处理
- 习题2-4,倒三角形
- IAR调试要点
- js闭包和函数式编程文章收藏
- 习题2-5,统计
- atp修复程序 SDRQCR21
- 标准成本法和移动平均价