欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  资讯频道

程序编译为何失败?

程序员文章站 2022-04-15 10:49:45
...
完美的程序不会是一次就写成功的,都要经过反复编译、调试、修改。调试过程可能会花费大量的时间,如果了解了常见编译错误发生的原因,这有助于节省时间,提高开发效率。

Google、香港科技大学和内布拉斯加大学的研究人员分析了1.8万Google工程师在2012年11月到2013年7月之间的超过2600万次编译,分析出了编译失败的常见原因、修复所花费的时间等。

下图显示了这些数据收集的过程。

程序编译为何失败?


1.  编译失败率与编译次数、开发者经验无关

研究人员推测,编译次数越多,出错的几率也就越大。但是实际数据显示,这两者之间没有相关性。

研究人员还推测,有经验的开发者出错率会比较低,但事实也并非如此。

2.  绝大多数编译失败与依赖有关

程序编译为何失败?


大约65%的Java编译错误被认为跟依赖有关,比如编译器无法找到一个符号(这是最常见编译错误,占所有编译错误的43%),或者是包不存在。

在C++编译中,大约53%的编译错误跟依赖相关,最常见的错误是使用了未声明的标识符和不存在的类变量。

3.  C++代码编译更容易出错

下图是编译错误率(x轴)对应的开发者人数(y轴)。

程序编译为何失败?


研究发现,C++代码的构建失败率为38.4%,而Java为28.5%。此外,在C++编译中发生语法错误比Java更频繁,但是C++编译错误会得到更快的解决。

研究人员认为,造成这种差异的原因是Java开发一般使用IDE,这有助于减少一些简单的语法错误,但IDE生成的代码在一定程度上也增加了解决编译错误的难度。

详细报告:Programmers’ Build Errors : A Case Study (at Google)(PDF)