鸡尾虾怎么吃:不仅仅是“屠龙之技”-编译器开发者的精神胜利!

来源:百度文库 编辑:九乡新闻网 时间:2024/04/29 19:11:16

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

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

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

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

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

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

看看这个招聘:

c/c++应用分析与优化专家 北京 上海 24–32万职责
负责客户系统中c/c++应用的深度健康检查和分析,发现潜在风险,解决架构/性能疑难问题:
1)       负责企业应用架构的分析、咨询
2)       负责c/c++应用系统深度健康检查及性能分析
3)       负责c/c++应用问题/故障根本原因分析及诊断
4)       性能优化方案的制定及调优实施,
5)       提供客户性能改进的最佳实践
6)       快速响应并及时解决重大故障和问题
7)       进行性能优化服务等相关服务产品的开发 

 

能力素质要求:
1)       精通unix c/c++语言
2)       精通unix(HPUX/AIX)c/c++的开发、编译、调优方法与工具
3)       精通CORBA技术
4)       精通HPUX/AIX/Solaris/Linux等操作系统环境
5)       熟悉oralce/informix数据库
6)       熟悉tuxedo等中间件者优先
7)       良好的沟通协调能力
8)       具备良好技术方案编写能力
9)       团队协作精神与主动性
教育工作经验要求:
1)       本科以上学历
2)       10年以上工作经验
3)       8年以上unix c/c++开发、调优经验
4)       具有电信/金融行业等企业级应用系统开发维护经验者优先

信息来源:http://hunterfrank.blog.163.com/blog/static/16846334120112289168644/

单就薪水来讲,在这个有Hadoop、搜索背景应届硕士至少16W+的时代,十年的工作经验20-30W,不算多.但这工作更多看重的是经验积累。

精神YY完了,说正事。计算机,说到底,只是个工具,编译器是为了更好的使用工具而创造的工具。所以编写应用程序才是王道。而编译器始终都是一个小众化的东西,但因为必不可少,所以还是有人要做。养家糊口而已。

一个公司要想做大,并做到至少百年的老店。核心竞争力是要有的。核心竞争力要么是自称体系能拿的出的一整套方案,这个在生产硬件的厂商里特别明显,比如IBM,Apple都开始从芯片到系统,从硬件到软件都做。Oracle也收购了Sun,基本也构成了整个体系。HP估计有一天也会完全控制安腾的研发。而对于互联网公司,要么拼无法拷贝的模式,如豆瓣和各种成功的博客;要么拼人气,比如人人和QQ。否则,再好的创业,只有被拷贝的份。

慢慢的公司起来了,就像极了传统行业,需要长久的经验积累,而企业为了留住有经验的人,也需要付出诚意。估计这就是为啥有很多人说IBM和HP之流比较像国企了。

想不通以后的时候,就找个已有的模型来描述它:建筑业。互联网公司更像是房地产开发公司,时时刻刻围绕着消费者转,作他们最需要的。服务器厂商更像是造专职的建筑公司。而编译器就像重型建筑设备,有了他,事倍功半。必须承认,房地产公司是整个建筑行业最有可能赚大钱的。同理,互联网也一样,所以互联网行业需要更多的人,有更高的薪水吸引最好的人。当然,竞争也是最激烈的。

接触过编译器技术的,基本上都挺喜欢的,从YY的角度,就不把这种感情解释成恋旧了。不管作什么,坚持自我的提高肯定是没错的。只要是一个还有用的方向,假以时日,肯定能做出来点东西。

不过,技术仅仅是一方面,技术要有用,对大多数人有用,才是好。否则,那是练功练的走火入魔了。

其实这篇文章的主题是:看,搞编译的,也能挣点钱,对于现在的我,好高骛远要不得,要实干,路在脚下,事在人为。