在前面的章节中,笔者已经详细阐述了Neo Pascal设计与实现的相关话题。通过本书的学习,相信读者对构造一个实际编译器的过程应该有所了解。从实践的角度而言,设计一个完整编译器可能远比学习枯燥的编译原理课程有趣得多。当然,在此过程中,设计者所享受的成就感也不是一门考试成绩所能替代的。由于撰写本书的目的并不在于讨论太多关于编译理论的话题,因此,也无法保证读者通过阅读本书就足以从容应对编译原理的考试。不过,笔者坚信,通过本书的阅读,读者对编译器乃至系统软件的设计与实现一定会有新的认识与提高,这可能是编译原理课程学习无法达到的。在庆幸的同时,新的征程才刚刚开始。对于计算机科学的一个核心领域而言,本书所涉及的话题只是冰山一角而己。
在国内,由于计算机基础学科相对薄弱,人们通常更愿意投身于应用领域的研究,编译技术并不太受到人们的关注,因此,基于这方面的研究成果也相对较少。除了早期一些大型机的Fortran、Algol编译器之外,并没有真正的产品级编译器,这不得不说是一种遗憾。本书的目的就是引领更多有志之士踏上编译器设计这片神奇的土地。
有人认为,编译技术已经成熟,继续研究是没有意义的。对此,笔者并不赞同,任何一门学科研究都是永无止尽的。在本书剩余的篇幅中,笔者将涉及一些现代编译技术的话题。下面就针对各领域的现状与发展趋势作简单介绍,以便读者了解发展与努力的方向。当然,有些看法纯属笔者个人观点,仅供参考。
在前端技术中,自动生成技术、IR设计仍将是最炙手可热的话题。
从20世纪六七十年代至今,前端自动生成技术一直是人们努力的方向之一,即使目前还只局限于词法分析器与语法分析器领域。以前有人甚至认为完全依赖于计算机实现前端的自动生成是一个可遇而不可求的理想状态,在很多人看来,这种猜测并非完全是无稽之谈。虽然目前无法证明这种观点的正确性,但是,解决这一难题同样是非常困难的。经过了数十年探索之后,试图让计算机自动构造语义分析器的目标仍然很难实现。基于属性文法与语法制导实现前端仍然是绝大多数编译器设计者的选择,这不得不说是一种遗憾。
除此之外,IR设计也是前端研究的一个热点。关于IR的评价,笔者已经在前面详细阐述了。虽然人们并不奢求获得所谓的“最优”IR形式,但不可否认的是IR仍然是设计者津津乐道的话题之一。当然,这种研究还是有价值的,任何基于IR的精雕细凿都是值得的。在本章中,笔者将介绍一下RTL,让读者体会经典IR的魅力所在。
在后端技术中,优化、新型编译器实现将是未来的研究热点。
自编译技术诞生之日起,关于优化的研究始终没有停息,当然,这个过程同样将延续至未来。原因非常简单,除非编译器生成代码的质量能与最高效的手工代码媲美,否则优化技术将是一个永恒的话题。在未来一段时期内,优化技术可能有以下几个主要的发展趋势:(www.daowen.com)
1)过程间分析、别名分析将是两个热点。
2)SSA形式将被越来越多的优化算法采用,其主要优点就是允许原来针对局部的优化算法作用于整个过程。
3)随着并行技术的发展,并行编译的优化技术将是未来十年内一个重要的研究领域。
4)高速缓存优化、数据依赖分析、软流水技术也将取得显著的成果。
5)针对嵌入式目标机的空间优化技术将是值得关注的焦点。
由于本书并非以介绍优化技术为主,因此,笔者不打算在本章中深入讨论有关优化的话题。
其次,新型编译器设计相关的技术也是值得关注的,主要包括并行编译技术、嵌入式编译技术、动态编译技术等研究领域。在本章中,笔者将对动态编译技术及并行编译技术作简单介绍。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。