参与杜伟 戴一鸣

从bug看11种编程语言演化史,果然如今Python最流行

自 2008 年创办以来,Stack Overflow 致力于为所有类型的开发者提供帮助,开发者们也提出了涵盖所有开发领域的大量问题。但是,哪些问题是开发者不得不向 Stack Overflow 寻求解决的呢?本文作者通过对十一年来人们在 Stack Overflow 上提问进行了词云统计,通过错误提问和解决遍览编程语言发展历程。

在本文中,作者选择了 11 种最流行的编程语言(通过 Stack Overflow 标签出现的频率衡量),希望可以找出这些问题的共性及差异性。


首先观察以下选择的 11 种编程语言:

作者选择的 11 种编程语言,包括 JavaScript、Java、C#、Python 等。


就开发者提出的原始问题数量来说,自 Stack Overflow 创办以来,JavaScript 相关问题被询问得频率最高,这或许是因为它普遍存在于各种不同类型的应用和服务中:无论开发者从事哪种互联网工作,都需要了解一些 JavaScript 知识。


虽然整体来看 JavaScript 相关问题排名第一,但是随着时间的迁移,可以看到头名出现了变化。

2011 年,《哈佛商业评论》将数据科学家成为「21 世界最性感的工作」。自那以后,Python 成为数据科学家的首选编程语言,使用量也日益增长。2019 年,Python 超越 JavaScript 成为了 Stack Overflow 上被提问最多的编程语言。


所以,Python 语言要么正在快速成为最受欢迎的编程语言,要么与其他编程语言相比,新程序员使用 Python 的比例较高。


从前面的视频来看,2008 年开始,C# 一直占据着 Stack Overflow 最受欢迎的编程语言榜首,而此时 Python、Java 和 JavaScript 还并不火热。但是从 2012 年开始,Python 超越 C++,开始一路逆袭。同时,JavaScript 的用户比例逐渐上升。最终,在 2018 年年底,Python 和 JavaScript 分别成为了榜单榜首和第二名。


但这些开发者具体都问些什么问题呢?提问最多的框架、程序包、函数和方法是什么呢?哪些数据类型给开发者带来最多的困扰呢?这些问题在不同编程语言中又有哪些不同呢?


为了得出结果,作者做了以下工作:


1. 分别提取 11 种编程语言在 Stack Overflow 上的 1000 个点赞最高的问题;
2. 在 Python 中进行数据清洗(pandas 工具);
3. 将总计 11000 个问题(超过 96000 个单词)馈入到 JavaScript 词云算法中,从而得出显示不同编程语言中通常痛点的鸟瞰透视图。


结果如下所示(按编程语言):

JavaScript


JavaScript 已经有 23 年的历史,而 Stack Overflow 的创办时间仅 11 年。在过去的 11 年里,「jquery」(上图中左)成为被问最频繁的 JavaScript 框架问题。
 
Python



Python 实际上比 JavaScript 早六年提出。在 1990 年提出 Python 后,Guido van Rossum (https://gvanrossum.github.io/) 的这项发明成为了数据科学家的一个选择。天然上来说,最频繁出现的问题都围绕着数据处理库「pandas」(中左)和「dataframe」(中上)。


然而,Python 有着广泛的用途,它类似于一种「胶水语言」,在技术的很多不同领域都有应用,这也可以解释为什么网络开发中的「django」(中下)会是一个重要的关键词。
 
R 语言



也许是数据科学中第二个选择,R 语言和 Python 本质的不同是它完全为数据科学而生。数据处理中的特定概念,如「dataframe」(右上)、「datatable」(右上)和「matrix」(中间)似乎会给 R 语言用户带来更多困扰。


Python 和 R 都有非常好的操作数据的库,虽然在涉及到数据可视化上,很多人会说 R 比 Python 更先进。这也可能是为什么「ggplot」(中间)是目前 R 语言用户提问最多的。


也许 Python 用户会发现 matplotlib 更容易使用。
 
Ruby



自上世纪 90 年代中期出现后,Ruby 现已经在服务端框架 ruby-on-「rails」(右上)中建立了自己的一席之地。
 
C#



C# 是由微软开发的,用于其 .NET 框架(中右)。
 
C++



C++(1985)已经成为了游戏开发者使用的语言。在 3D 游戏中建立视觉构建块的是 polygon,而 polygon 中基本的构成是向量(中右)。
 
Java



Java(1995)被设计于一个非常泛用的目标——一次编译,处处运行。在 PC 爆炸的上世纪 90 年代后期和互联网兴起的早期,Java 成为了很多 Windows 应用背后的开发语言。但是最近,Java 逐渐在安卓系统里找到了自己的地位(中右)。
 
Objective-C



作为本次统计中最老的语言,Objective-C (1984) 牢牢占据着苹果的 OSX 开发以及近年来 ios(左侧)在 iPhone(中间)的开发,直到 Swift 语言问世。
 
Swift



自从 2014 年提出以来,Swift 就代替了 Objective-C,用于苹果的生态开发。从这一语言中常提到了关键词「objective-c」可以看出,数千名 ios 开发者已经更新了自己的知识。
 
PHP



PHP(1995)是被设计用来进行服务器端的脚本语言,主要用于网络开发。现在它依然发挥着这样的作用,这也是为什么这个编程语言中常常提出的问题都和「laravel」框架相关。
 
SQL



SQL 并不是有着完整特性的编程语言。它只为一个任务而生:操作数据。由于这一特殊目的,SQL 语言的痛点基本上都围绕着数据库连接,如「sever」、「mysql」、「database」、「query」和「select」等。


每个编程语言都在不断地朝着,甚至被设计,来完成科技中的某个部分。R 用于数据科学,而 Swift 则用于 IOS 开发,C++则是电子游戏开发。这解释了为什么不同的编程语言会爆出不同的 bug。例如,在 SQL 中可以经常见到「database」这样的关键词,但是在 Objective-C 中可能就很少会见到了。


除了这些明显的区别,本次可视化的结果也展示了不同领域本质上的相似点。基本的数据类型——如字符串和数组(但不是整型、浮点型或布尔型)数据是经常给开发者带来痛点的地方。


最终,将所有的问题集合在一起做成词云。



原文链接:https://www.globalapptesting.com/blog/picking-apart-stackoverflow-what-bugs-developers-the-most

产业JavaScriptPython
1
相关数据
微软机构

微软是美国一家跨国计算机科技公司,以研发、制造、授权和提供广泛的计算机软件服务为主。总部位于美国华盛顿州的雷德蒙德,最为著名和畅销的产品为Microsoft Windows操作系统和Microsoft Office办公室软件,以及Xbox的游戏业务。微软是美国《财富》杂志2015年评选的世界500强企业排行榜中的第95名。

https://www.microsoft.com/en-us/about
数据可视化技术

数据可视化被许多学科视为现代视觉传达的等价物。为了清晰有效地传递信息,数据可视化使用统计图形、图表、信息图和其他工具。数字数据可以使用点、线或条编码,以视觉传达定量消息。有效的可视化帮助用户对数据进行分析和推理。它使复杂的数据更容易理解和使用。用户可以根据特定的分析任务进行数据可视化,例如进行比较或理解因果关系,并且图形的设计原则(即,显示比较或显示因果关系)来进行可视化。表通常用于用户查找特定测量的地方,而各种类型的图表用于显示一个或多个变量的数据中的模式或关系。

推荐文章
Pro
杭州市首富科技・员工
jquery被问的多那是因为做前段的人大部分都很菜。