程序编译为何失败?

简介:

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

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

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

image

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

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

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

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

image

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

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

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

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

image

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

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

相关文章
|
存储 程序员 C++
解决vs运行时报C4996代码错误
在解决bug的路上越走越远。。。。
231 0
编译好的编译ffmpeg又出错:更改输出目录产生各种古怪错误
编译好的编译ffmpeg又出错:更改输出目录产生各种古怪错误
95 0
|
Windows
由于找不到libstdc++-6.dll,无法继续执行代码
原因 系统缺少libstdc++-6.dll文件 解决方法 1. 下载libstdc++-6.dll文件 点此下载即可,阿里云盘分享😊 2. 将libstdc++-6.dll移动到C:\Windows\System32目录下
1415 0
“由于找不到xinput1_3.dll,无法继续执行代码”
“由于找不到xinput1_3.dll,无法继续执行代码”
469 0
“由于找不到xinput1_3.dll,无法继续执行代码”
|
C++
so运行出错:只包含了头文件,未同时编译cpp
so运行出错:只包含了头文件,未同时编译cpp
123 0
|
Unix C++
源码文件编码问题,导致编译的程序运行错误
源码文件编码问题,导致编译的程序运行错误
113 0
由于找不到vcruntime140.dll,无法继续执行代码
由于找不到vcruntime140.dll,无法继续执行代码
556 0
|
C++ 编译器 程序员
C++程序设计基础(1)程序的编译和执行
注:读《程序员面试笔记》笔记总结 1.编译执行过程 1.1预处理: (1)所有以#开头的代码都属于预处理的范畴:#include,#define,#ifdef(#ifndef,#endif),#other(其他宏指令) (2)处理预定义的宏:例如__DATA__,__FILE__(前后都是两个下划...
1055 0