作家
登录

哪种编程语言最容易出bug?

作者: 来源: 2018-01-03 00:15:03 阅读 我要评论

最终结论

【限时免费】岁尾最强一次云计算大年夜会,看传统、社区、互联网企业若何碰撞?


比来,ACM宣布了一个关于编程说话对软件质量的影响的研究申报,在申报中有一些关于bug的有趣发明。

研究人员Baishakhi Ray,Daryl Posnett,Premkumar Devanbu和Vladimir Filkov应用GitHub数据进行了一次大年夜范围的实验性查询拜访,重要研究法度榜样员对于哪种编程说话针对某个特定义务是最好的┞幅论。研究院经由过程多重回归建模、可视化以及文本分析等结合在一路的办法,研究了静态和动态说话的特点,以及编程说话对软件质量的影响。

分析获得的结论可以简单表述为:

说话设计确切对软件质量有明显的影响。最值得留意的是,看起来不许可类型混淆的情况要比许可的稍微好一点,并且在函数式说话中,静态类型也比动态类型要好一些。我们还发明函数式说话比过程说话稍好一些。

这个研究的目标在于解释编程说话是否会同时影响编程的过程和结不雅,重点在于静态和动态说话的比较:

倡导静态类型说话强大年夜的人认为静态可以及早发明缺点,对于他们来说袈浃防远比治疗要好得多;而动态类型说话的倡导者则认为保守的静态类型检查是开辟资本的浪费,并且还可以依附强大年夜的动态类型检查来捕获类型缺点。当然,这些争辩大年夜多照样逗留在空言无补的阶段,缺乏事实证据支撑。

研究人员接下来将留意力转移到缺点的偏向上,即缺点修复对每种说话总提交数的比率,并生成了一个热图,个中色彩越深注解越轻易出现缺点:

图4:哪种编程说话最轻易出bug?

为了进行这项查询拜访,团队选择了GitHub排名前19位的编程说话,并且添加TypeScript作为第20种编程说话,然后以每种说话编写的前50个项目为样本,同时放弃了提交次数少于28次的项目,如不雅是多种说话提交的项目,那么应用该说话的有效提交次数少于20次也会被放弃。

图0:哪种编程说话最轻易出bug?

然后,如上表所示,这项研究分析了以17种说话开辟的728个项目。这些项目跨越了18年的汗青,囊括了2.9万名不合的开辟人员,157万次提交和564625次缺点修复提交。

接下来,团队定义了说话类,区分了三个编程典范:法度榜样、脚本和功能;两类类型检查:静态和动态;隐式类型转换是否被禁止或许可,以及治理内存或未治理内存:

图1:哪种编程说话最轻易出bug?

应用关键字搜刮缺点修复信息的10%来练习一个缺点分类器,研究人员肯定了每个bux-fix提交的原因和影响。

图2:哪种编程说话最轻易出bug?

要解决的第一个问题是“有些说话比其他说话更轻易出现缺点吗?”“这是用回归模型来比脚绫强种说话对所有说话平均缺点数量的影响,并针对缺点修复提交:

图3:哪种编程说话最轻易出bug?

在这张表的顶部是一些变量,这些变量被用来控制可能与之相干的身分。项目年纪主如果反竽暌钩了在一些较老的项目中,平日会有更多的缺点修复;介入的开辟人员的数量和项目标原始大年夜小也会影响到bug的数量,最终提交的数量也是很大年夜影响身分。

具有最强正系数的说话即竽暌闺缺点修复更相干的编程说话是c++、C、objective – C,以及PHP和Python。而Clojure、Haskell、Ruby和Scala都有明显的负系数,这意味着这些说话不太可能导致缺点修复提交。对于说话类来说,函数式说话的缺点比法度榜样或脚本说话都要少。

大年夜膳绫擎的热图中可以得出结论:应用范畴与说话缺点偏向性之间没有一般的关系。然则不雅察说话类和缺点类别之间的关系注解:

缺点类型与说话慎密相干;内存缺点和并发缺点等一些缺点类型也依附于说话原语。对于特定类别,说话比缺点整体来说更重要。

图5:哪种编程说话最轻易出bug?

因为这个热图显示了Proc-Static-Implicit-Unmanaged 类与并发性和内存缺点之间的强关系。它还注解,静态说话平日更轻易出现故障和机能缺点,其次是 Functional-Dynamic-Explicit-Managed 说话,如Erlang。

数据注解,函数式说话优于过程说话,不许可隐式类型转换要比许可更好;静态类型优于动态类型。并且,治理内存应用比未治理好。此外,一般而言,说话的缺点偏向与软件范畴没有接洽关系。此外,与总体bug比拟,说话更与单个的bug类别相干。

【编辑推荐】

  1. 法度榜样员削减代码BUG的7种办法,拒绝编程5分钟,查代码2小时!
  2. 10个JavaScript常见BUG及修复办法
  3. Node.js中碰到含空格URL的神奇“Bug”——小范围深刻HTTP协定
  4. Go运行时,对bug的分析调试过程解析
  5. 法度榜样员大年夜复杂代码中找BUG的5种办法,你用过几个?
【义务编辑:未丽燕 TEL:(010)68476606】

  推荐阅读

  代码质量 – 代码的历史是代码未来的预言

【限时免费】岁尾最强一次云计算大年夜会,看传统、社区、互联网企业若何碰撞? We can never see past the choices we don’t understand. – Oracle (The Matrix)副标题是:&>>>详细阅读


本文标题:哪种编程语言最容易出bug?

地址:http://www.17bianji.com/lsqh/40180.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)