不仅仅是“屠龙之技”-编译器开发者的精神胜利!

时不时听到周围作编译器相关工作的朋友、同学,对编译这个行业的未来持不乐观态度。诚然,芯片厂商可以通过优化芯片内的结构调整,很容易获得百分之十几以上的加速。而相比之下,编译器方面的静态优化,由于几十年的发展,能挖的性能很有限了,平均能有个10%左右的加速,发表一篇PLDI级别的文章,问题不大。有机会接触芯片细节,并据此开发编译器的,只有几个芯片设计公司;有机会接触到中端优化的,还有一些主推整套平台的一些公司。另外,就是些小的只做编译器的公司。不管是国内,还是国外,因为开源和芯片体系结构单一化,编译器开发职位正在慢慢减少。即使做了这方面的工作,往往也是非主流。不是销售,不是直接赚钱的研发。碰巧,那龙书又是以龙为封面,“屠龙之技”可谓恰到好处的一个词。

但本博比较喜欢把编译技术看成一种内功,没有花样繁多的招式,命令行一敲,性能测试结果出来,高了就是高了,不行就是不行,只有简单的对错。但一招一式扎实有力。

先来看看编译涉及的技术:

  • 自动机相关理论
  • 语法制导翻译相关理论
  • 后端优化涉及的就更多
    • 寄存器分配
    • 指令调度
    • 控制流图分析
  • 运行时技术
    • 垃圾收集
    • 即时编译

从编译器开发的角度来说,开发这些技术是为了解决其中重要的问题。

从程序员的角度,这些理论为设计算法和组织程序提供了很多帮助。自动机相关理论,让程序更加简洁;语法制导翻译,方便设计和开发数据属性在整个软件控制中的流动;后端的理论也同样,如图着色,图算法这些。对于计算机相关非技术从业人员,这些技术背景,能帮助他拨开商业宣传的迷雾。任何语言,不管是C、Java、Python、Perl还是XML、HTML,甚至LATEX、SQL都会涉及到前端技术。再往大了说,要制定计算机相关的规则,要指定的尽量科学,这些理论和技术都是逃不掉的。


你可能感兴趣的:(编译原理)