技术开发 频道

研究显示,用Python更易出现软件缺陷!

  【IT168 资讯】经常会有刚入行的程序员试图比较各大编程语言之间的差别,然后选择自己认为较好的编程语言学习。虽然圈子里公认各大编程语言之间没有好坏之分,只有是否合适,但不知广大程序员有没有思考过编程语言对软件质量的影响呢。

研究显示,用Python更易出现软件缺陷!

  近日,研究人员Baishakhi Ray、Daryl Posnett、Premkumar Devanbu、Vladimir Filkov 从GitHub收集了大量数据(728个项目,6300万SLOC,29,000作者,150万提交,17种语言)以回答这个问题:编程语言与软件质量之间的关系是什么呢?

  他们发现:

  编程语言确实对软件质量有影响,但影响程度一般;

  不允许类型混淆的编程语言比允许类型混乱的要更好一些;

  在函数式编程语言中,静态类型比动态类型更好;

  函数式编程语言比过程式编程语言效果差。

  结论:

  函数式编程语言编写的软件质量显然不如过程式编程语言,C、C ++、Objective-C、Php和Python与更多数量的缺陷修复相关,而Clojure、Haskell、Ruby和Scala则不太可能导致缺陷修复。而在函数式编程语言中,静态类型语言表现更好。语言类型与软件缺陷之间存在很小但重要的关系,函数式编程语言比过程式语言或脚本语言的缺陷更多。缺陷类型与编程语言密切相关, 一些缺陷类型,如内存错误和并发错误取决于语言原语。对于具体类别而言,编程语言对整体缺陷的影响更大。

研究显示,用Python更易出现软件缺陷!

  上图显示的第一列为编程语言,最后一列为对应的bug修复数,不难看出Python的41.9明显高于Java的35.9,如果Python想取代Java,似乎还欠缺很大火候啊!此外,C语言的182.6实在是多得离谱,可能是因为C语言问世较早,所以经历的摸索期和修复期更长的关系,C++、C#或许与C语言有着相同的原因。

  本次实验所选用的语言和项目数据是从公共GitHub数据库GitHub Archive中提取出来的。研究人员从GitHub中选择了前20种编程语言(不含CSS、Shell脚本和Vim脚本,因为它们不被视为通用语言)并添加了Typescript。同时,检索了这些主流编程语言的前50个开源项目!

研究显示,用Python更易出现软件缺陷!

  对于每个项目(共728个),研究人员使用git下载了未合并的提交,包括提交日志、作者日期和作者姓名。根据每个文件添加、删除的行计算代码流失和每个提交修改的文件数,然后从修改的文件扩展中检索与每个提交相关联的语言。对于每个提交,通过从相应项目的第一次提交中减去其提交日期来计算其提交周期,并计算其他项目相关统计信息,包括项目的最大提交周期和参与的开发人员总数。研究人员通过搜索错误相关的关键字,确定了对个别项目的错误修复提交,比如“错误”、修复”、“问题”、“不正确”、“故障“、”缺陷”等。

  然后,根据其原因和影响将错误分为两个阶段:关键字搜索和监督分类。研究人员使用回归模型记录软件项目相关的缺陷提交数量。

  这些结果是否对程序员选择编程语言有所帮助呢?会不会动摇你现在的基本选择呢?评论告诉我们吧!

0
相关文章