写点什么

某些编程语言更容易出错?研究人员提出质疑

  • 2019-02-11
  • 本文字数:1876 字

    阅读完需:约 6 分钟

某些编程语言更容易出错?研究人员提出质疑

在人们的印象中,使用某些编程语言往往更容易出现 bug,但是这种印象基本还处于比较“唯心”的阶段,在近来的研究中几乎没有发现有力的证据。


在 2014 年软件工程基础(FSE)大会上发表的一篇学术论文“A Large Scale Study of Programming Languages and Code Quality in Github”声称,某些计算机编程语言具有更高的代码错误率,并由此引发了一场开发者大讨论。


这篇论文由加州大学戴维斯分校计算机科学家 Baishakhi Ray、Daryl Posnett、Vladimir Filkov 和 Premkumar Devanbu 共同撰写,论文指出,使用 C 语言、C++、Objective-C、JavaScript、PHP 和 Python 编写的代码比其他语言包含了更多的缺陷。


来自马萨诸塞州阿默斯特大学、美国东北大学和布拉格捷克技术大学的计算机科学家们试图重现这项研究结果。


在最近的一篇题为“On the Impact of Programming Languages on Code Quality”的 ArXiv 论文中,Emery Berger、Celeste Hollenbeck、Petr Maj、Olga Vitek 和 Jan Vitek 重新回顾了 2014 年论文中的四个主要发现,以此来评估有关编程语言设计重要性的假设。


但他们并没有发现任何有力的证据。他们尝试重现 2014 年的研究成果,但大多以失败告终。他们的分析表明,C++代码中实际出现的缺陷比它们应该出现的频率更高,但即便如此,他们认为,这从统计学方面来看仍然是无关紧要的。

相关性和因果关系

马萨诸塞州阿默斯特大学计算机科学教授 Emery Berger 在接受“The Register”的电话采访时表示,最重要的是要区分重现失败的含义和实际情况之间的区别。


他说,最初的研究旨在建立编程语言与缺陷之间的相关性,而人们误将这种相关性看成是一种因果关系。


Berger 说,“这并不意味着它就是不对的,只能说明他们的很多说法站不住脚。在数据科学家们当中流行着一个玩笑——如果你对数据进行足够长时间的折磨,它们最终会说话。仅仅因为拥有数据并不意味着它们就是建立某些特定主张的正确数据。GitHub 代码库的数据是一个很好的资源,但并不能通过分析这些数据来确定所有的事实”。


2014 年分析 GitHub 代码得出的发现还包括:


  • “某些语言与缺陷的相关性比其他语言更高,尽管效果没有那么明显。”

  • “语言类别和缺陷之间存在着一个很小但却很重要的关系。函数式语言与缺陷的相关性比过程式语言或脚本语言要小一些。”

  • “领域和语言缺陷倾向之间不存在一般性关系。”

  • “缺陷类型与语言密切相关。”


但是,当研究人员试图重现早期的研究结果时,大多数情况下却做不到。对于第一个命题,他们在编程语言与其缺陷数量关系方面发现了一些细微差别,但这并不重要。


他们无法重现其余三个命题的结果,最后两次试图重现结果的努力因数据缺失而以失败告终。

这是一门科学

Berger、Hollenbeck、Maj 和 Vitek 在他们的论文中写道:“我们已经发现 FSE 研究中存在很多问题,这些问题导致其关键结果无效。我们的目的不是要责备谁,基于大规模代码库对编程语言进行统计分析本来就是一件很困难的事情”。


未能重现结果并不意味会得出相反的结果:无论是使用函数式、过程式还是面向对象编程语言并不重要,语言是静态类型的还是动态类型、是强类型的还是弱类型的也不重要。实际上,数据并没有告诉我们这些信息。


Berger 表示,除了这项研究之外,更重要的是编程语言是否会产生影响。


他说:“我心里是这么认为的,但在现实当中不可能通过实验来证实”。


他说,使用 Haskell 的程序员比普通 Python 程序员受过更多的学术训练,“我们假设 Haskell 程序的错误更少,可能是因为使用 Haskell 的程序员大都拥有博士学位”。


换句话说,有很多上下文信息没有被纳入到 GitHub 的数据分析中。


结果的反面是科学的运作方式、实验结果应该针对可重复性进行测试,但这种情况通常不会发生。《自然》杂志 2016 年发布的一份报告显示,在接受调查的 1576 名科学家中,有一半甚至无法重现自己的研究成果。


值得称赞的是,研究人员最初预见了工作中存在缺陷的可能性,并指出了在结论有效性方面存在的几个潜在威胁。


这些研究人员对数据科学陷阱提出了警告,并强调了通过自动化研究来实现可重现研究的必要性。


他们总结说:“虽然统计分析与大数据语料库相结合是一种强大的工具,可以用来解答最难的研究性问题,但这些研究所涉及的工作量以及出错的可能性是巨大的”。


英文原文:https://www.theregister.co.uk/2019/01/30/programming_bugs


学术论文 A Large Scale Study of Programming Languages and Code Quality in Github:http://web.cs.ucdavis.edu/~filkov/papers/lang_github.pdf


学术论文 On the Impact of Programming Languages on Code Quality:https://arxiv.org/pdf/1901.10220.pdf


2019-02-11 10:316502
用户头像

发布了 731 篇内容, 共 483.2 次阅读, 收获喜欢 2008 次。

关注

评论 1 条评论

发布
用户头像
C++又中枪
2019-07-12 09:41
回复
没有更多了
发现更多内容

项目性能优化实践:深入FMP算法原理探索|得物技术

得物技术

前端技术 前端算法 算法、

全球企业选型指南:引入全球舆情工具的4个阶段与避坑要点

沃观Wovision

舆情分析 舆情监测 海外舆情监测 舆情服务 舆情监测平台

Serverless is all you need: 在亚马逊云科技上一键部署大模型API聚合管理平台OneHub

亚马逊云科技 (Amazon Web Services)

人工智能

AI 英语教育 App 的主要功能

北京木奇移动技术有限公司

AI教育 软件外包公司 AI英语

除了情感分析,优秀的海外舆情分析网站还应提供这3个关键功能

沃观Wovision

舆情分析 舆情监测 海外舆情 海外舆情监测 舆情监测平台

cURL 8.17.0 发布:安全修复、功能变更与未来展望

qife122

curl 开源软件

主动出击!发挥财务管理自动化的最大潜力

智达方通

企业管理 企业管理软件 全面预算管理 财务管理

年省百万成本,枫清科技「AI问数」驱动金融效率革命

Fabarta

AI问数

2025年开发者必看:用PandaWiki零代码搭建智能产品文档系统

百川云开发者

时序数据库 Apache IoTDB 在北京等你!锁定 COSCon 第十届中国开源年会

Apache IoTDB

AI眼镜,大厂第一战

脑极体

AI

境外舆情服务的战略价值:从信息监控到商业决策的闭环服务

沃观Wovision

舆情分析 境外舆情监测 境外舆情监控 境外舆情 舆情服务

3D打印与平价假肢之梦:技术现状与挑战

qife122

3D打印 医疗技术

星链打击:下一代网络疑云

脑极体

AI

超越情感正负:优秀的海外舆情分析工具必备的5个深度洞察维度

沃观Wovision

舆情监测 海外舆情监测 出海舆情 舆情监测平台 舆情监测服务

何为真正的“全球”覆盖?评估全球舆情工具的5大全球化标准

沃观Wovision

舆情分析 海外舆情监测 海外舆情平台 舆情监测平台

达索 Abaqus/CST 代理商采购流程 - 认准思茂信息官方授权

思茂信息

abaqus 有限元分析 有限元仿真

闲鱼商品列表API完整指南

Datafox(数据狐)

闲鱼API 闲鱼商品数据采集 闲鱼商品列表api 闲鱼商品接口

成功案例丨仿真+AI技术为快消包装行业赋能提速:基于 AI 的轻量化设计节省数十亿美元

Altair RapidMiner

人工智能 AI 仿真 CAE 消费品

NFT 技术的应用及开发

北京木奇移动技术有限公司

NFT 数字藏品 软件外包公司

鸿蒙系统 4.1.0 兼容 Android apk 如何检测兼容的 Android 系统版本是多少

lichong951

HarmonyOS HarmonyOS NEXT

数字孪生项目开发核心技术栈

北京木奇移动技术有限公司

数字孪生 软件外包公司 webgl开发

能看清,更要看懂:MME-VideoOCR全面评估MLLM视频OCR能力

快手技术

NeurIPS 顶会论文 快手技术

揭秘ChatGPT广告系统:技术架构与商业化的未来

qife122

人工智能 ChatGPT

大数据-171 Elasticsearch-Head 与 Kibana 7.3.0 实战:安装要点、连通性与常见坑

武子康

Java 大数据 elasticsearch 分布式 Kibana

AI 英语作文 App 的开发技术与功能

北京木奇移动技术有限公司

AI教育 软件外包公司 AI英语

AI 技术在英语教育中的核心应用

北京木奇移动技术有限公司

AI教育 软件外包公司 AI英语

万界星空AI产线MES:打破产线“黑箱”,迈向智能决策

万界星空科技

mes 万界星空科技mes 产线mes AI产线MES 智能化产线

化“痛点”为“支点”:中国重汽为煤炭运输提供高效运力解决方案

科技经济

android 使用 java 编写网络连通性检查

lichong951

android Android TV

闲鱼商品详情API完整指南

Datafox(数据狐)

闲鱼API 闲鱼商品数据采集 闲鱼商品详情API 闲鱼商品接口

某些编程语言更容易出错?研究人员提出质疑_语言 & 开发_Thomas Claburn_InfoQ精选文章