程序编译为何失败?
程序员文章站
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)
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)
上一篇: XML序列化
下一篇: 一个Java时间工具类
推荐阅读