数字背后的故事:Python社区2017/2018年发展趋势

本文透过大量收集自Python开发者调查的数据,揭示了有关Python编程语言的最新使用情况和发展轨迹。

Python正变得越来越受欢迎,在科技新闻中引起了人们更多的关注。有报道说,更多的女高中生们正在将Python应用于计算机工程的学习;Python被推荐为大学计算机入门课程的编程语言。 此外,Stack Overflow的2018年开发者调查显示,Python是大多数人想学习的编程语言。 Python被广泛用于网络,从简单的个人网站,到全世界大型银行里的数据挖掘和机器学习。

是什么让Python如此特别? Python开发者是哪些人? 它为什么如此受欢迎? 为了回答这些以及其他许多重要的问题,JetBrains和Python软件基金会(Python Software Foundation,PSF)合作,针对使用Python作为主要或次要语言的人群开展了一项调查。 到目前为止,还没有人做过针对Python的专项研究,以期了解不同开发人员是如何使用它的,有哪些组件促进了它的使用,以及是什么让它成为了最受欢迎的语言之一。

我们调查的目标是确定Python的最新趋势,并一窥Python开发界的全貌。抱着这一目的,我们着手研究了以下问题:

  • Python 3最新的普及率是多少?

  • Python是怎样和其他语言一起使用的?

  • 什么样的项目会用到Python?

  • Python用户的主要开发类型有哪些?

  • 最流行的技术和工具是什么?

  • 最常见框架和库有哪些,以及它们是如何相辅相成的?

  • Python开发者是一群什么样的人?

该调查于2017年10月发布。这里是我们对结果所做的汇总,你也可以从Python开发者调查2017年结果的网站上挖掘更多的图表和原始数据。

方法论

在我们查看相关数据和见解之前,有必要回顾一下调查所采取的方法,包括:调查是如何派发的,采取了哪些措施来避免潜在的偏见,并确保调查不倾向于任何特定的工具,技术,库,或者国家。

我们将调查发送给几个独立的团体,包括订阅了PSF邮件列表,博客,Slack,LinkedIn和Twitter的人员。我们还在一些访问量最大的Python.org页面上推广了该项调查,并通过阅读文档进行了公布。大部分回复(62%)来自Python.org上的广告横幅;其他主要来源是PSF博客和Twitter帖子。我们没有利用产品、服务或供应商相关的渠道,以防止调查结果倾向于任何特定的工具或技术。

调查深受社区的欢迎,回复率超过预期。在开放期间,收到的回复超过了1万份。我们在做调查分析时过滤掉了不完整和重复的回复,留下来的数据集包括了来自150多个国家的9,532名应答者。对于如此大的样本,描述统计误差的保守置信区间仅为1%,意味着所有结果都具有统计显著性。我们实现了调查的主要目标:收到了准确可靠的数据!

数字背后的故事:Python社区2017/2018年发展趋势_第1张图片

Python开发者画像

开启Python世界之旅的第一步,让我们来聊聊最令人兴奋的事儿 -- 和Python语言及其应用程序相比,Python社区也呈现出同样的多元化。

数字背后的故事:Python社区2017/2018年发展趋势_第2张图片

虽然Python用户的年龄范围很广,但是大多数受访者的年龄在20岁左右,四分之一在30多岁。有趣的是,几乎五分之一的Python用户年龄在20岁以下。如果我们将Python开发人员的年龄范围,与Stack Overflow在其最新调查中确定的一般开发人员的年龄范围进行比较,分布情况比较相似。区别在于,Python调查中,年龄在18岁以下的开发者稍微多一些。原因在于,很多中学和大学的学生在使用Python,而且Python常常被选作第一门语言。

超过一半的受访者是全职的开发人员,每五名开发人员中就有一位担任数据分析师,架构师,或团队负责人。与Stack Overflow的调查相比,我们可以看到:Python开发者比一般开发者更少可能全职工作(52%的Python开发人员与74%的开发人员),更有可能为自己工作,或成为自由职业者(Python开发人员占13%,所有开发人员占9.7%)。

Python调查的受访者呈现出各种不同的经验; 22%的人拥有不到一年的经验,超过11年经验的人也是这个比例,而在这两者之间的分布趋于平滑。这表明新手和经验丰富的开发人员之间保持了良好的平衡,使Python成为了可持续发展的语言。

数字背后的故事:Python社区2017/2018年发展趋势_第3张图片

值得注意的是,Python比其他语言的平均新手比例高得多。 根据Stack Overflow数据,30%的开发人员拥有不到两年的专业经验,而Python开发人员调查中的这一比例为41%。

大型的Python开发团队中并不多见。 在我们的调查中,56%的Python开发人员表示他们独立开发项目,40%的人通常在2到7人的团队中工作。 大约一半的受访者在从事一个主要项目的同时还有几个小项目,而四分之一的人则一次只从事一个项目。

数字背后的故事:Python社区2017/2018年发展趋势_第4张图片

2016年,JetBrains在没有PSF参与的情况下举办了一次Python开发者调查。 虽然JetBrains在2016年的样本规模很大,但其调查主要通过自己的渠道进行推广,这自然吸引了PyCharm用户中的更大份额 - 约50%的PyCharm用户和50%的使用其他编辑器的用户。 为了减少不可避免的偏差,2016年的调查没有比较不同代码编辑器的用户数量。 尽管2016年的调查结果存在偏差,仍然值得比较一下2017年和2016年的一些调查结果。 例如,在2016年的调查中,45%的人表示独立完成自己的项目,51%的人则是团队工作。 2017年调查中的这一比例不同也许是因为,有大量的新手,且Python是他们的第一语言,以及数据科学家的数量和现在使用Python的Web开发者的数量旗鼓相当。

Python工作机会

正如我们上面所写的,在Stack Overflow的2018年开发者调查中,Python是最理想的语言(即调查者最有兴趣学习的语言);这是Python连续第二年获得该排名。 Python用户在排名最高的编程语言中排名第三。这些事实与Python就业市场是什么关系呢?

尽管Python开发人员调查并未专门提出工作受欢迎度,但我们可以从Python开发人员需要的其他资源中,收集世界范围内的各种工作信息。包括机器学习,数据库,数据分析,云基础设施,设计,站点可靠性/测试,网络抓取,安全性,移动开发,API等等。根据jobs.python.org上列出的职位,机会倾向于国际化需求,尤其是在英国地区。

在任何主要求职网站搜索“Python开发人员”,往往会返回数千个就业机会。 2018年3月,美国Python开发者在美国的平均工资(根据实际数据)为115,835美元。这么高的平均工资表明,许多公司正在竞相雇佣知识渊博的Python开发人员。这进一步说明Python确实是一种广受欢迎的技能。

Python与美国最好的工作 -- 数据科学也有关系(基于2018年4月的Glassdoor.com)。大约五分之一的数据科学工作涉及Python,包括NumPy,Pandas和Matplotlib库。

Python使用情况

几乎五分之四的Python开发者认为Python是他们的主要语言,比JetBrains 2016年调查的75%增加了4%。

数字背后的故事:Python社区2017/2018年发展趋势_第5张图片

各种研究表明,Python开发人员的数量以及使用Python作为主要语言的开发人员的份额正在逐年稳步增长。 在Stack Overflow的调查中,Python的受欢迎程度从2017年初的32%上升到今年年底的38.8%。 这可以通过Python数据科学的迅速普及来解释,因为这部分用户的增长速度远远快于其他用户。

Python经常与其他语言一起使用:

数字背后的故事:Python社区2017/2018年发展趋势_第6张图片

所有使用Python作为主要语言的开发人员中有一半还使用JavaScript。 79%的网页开发人员使用JavaScript,但只有39%涉及数据分析或机器学习。

对于那些使用Python作为辅助语言的用户来说,细分情况略有不同,因为使用JavaScript(46%)和更多使用C / C ++(42%),Java(41%)和C#(24%)的用户较少。

Python开发类型

为了确定最流行的Python开发类型和它们的交集,我们提出了两个类似的问题:“你用Python做什么?” 受访者可以选择多个答案,以及“你最喜欢用Python干什么?” 受访者只能选择一个答案。 结果显示,科学方面的开发现在像网络开发一样受欢迎:有一半的受访者从事数据科学项目,另一半是网站开发。

数字背后的故事:Python社区2017/2018年发展趋势_第7张图片

根据受访者是否使用Python作为主要或次要语言,回复有所不同:使用Python作为其主要语言的人中有54%参与了Web开发,而那些认为Python是其次要语言的人中有33%参与了Web开发。 这种差异对于数据分析,机器学习和其他类型的开发来说不太重要。

许多Python开发人员扮演多种角色。 他们承担最多的角色有:

数字背后的故事:Python社区2017/2018年发展趋势_第8张图片

数据分析和机器学习的交叉是预料之中的,网络开发和数据分析/机器学习之间的交叉却值得关注。

当被问及他们从事的主要开发类型时,26%的Python用户选择网页开发,超出了数据分析的范围(据报道为18%)。

数字背后的故事:Python社区2017/2018年发展趋势_第9张图片

但是,如果我们将18%进行数据分析的人与9%主要角色是机器学习的人结合起来,那么我们知道27%的人主要从事科学开发。 这意味着数据科学家使用Python的人数与网络开发人员数量一样多。

数字背后的故事:Python社区2017/2018年发展趋势_第10张图片

有趣的是,当JetBrains在2016年进行了Python开发者调查时,有38%的受访者认定为Web开发人员,只有21%认为是科学开发人员。 这可能是Python开发人员数据科学家迅速增长的证据。

比较使用Python作为主要语言与辅助语言的趋势之间的趋势,网站发展差距最大(29%为主,15%为次要)。 数据分析和机器学习的差别要小得多。 相反,更多的DevOps和系统管理员使用Python作为辅助语言(13%)而不是主要语言(8%)。

数据科学占据了Python第一吗?

Python开发者调查中,最令人感兴趣的问题是Python世界中,网络开发者与数据科学家的比例。 我们要求受访者估算使用Python的网络开发人员和数据科学家之间的比例。 受访者可以根据自己的经验,看法和一般“直觉”来回答。 因为我们明确地询问了开发的类型,并且样本规模足够大以具有统计显著性,所以我们可以将社区的看法与现实进行比较。

数字背后的故事:Python社区2017/2018年发展趋势_第11张图片

更多受访者(57%)认为网络开发者比数据科学家更普遍,而只有33%认为相反。

数字背后的故事:Python社区2017/2018年发展趋势_第12张图片

根据之前部分显示的数据(26%网络开发,27%科学开发为主要活动),真实的比例是1:1。

只有九分之一的受访者猜对了这一点; 大多数人低估了Python数据科学用户的数量。 Web开发通常被认为是Python的主要应用。 虽然这在几年前是真的,但Python数据科学家的数量正在快速增长,并且已经与Web开发人员的数量保持一致。

Python 2与Python 3

我们问,“你使用最多的是Python的哪个版本?” Python 3遥遥领先,是75%,而使用Python 2作为主要解释器的仅占25%。 Python 3正在迅速增长; 在2016年的调查中,60%的人使用Python 2和40%的Python 3. Python 2的使用正在下降,因为它没有得到积极发展,没有获得新的功能,并且在2020年后不再维护。

值得注意的是,70%的网络开发人员使用Python 3,而数据分析师中有77%,机器学习专家中有83%。 这可能是因为许多Web开发人员在转换到Python 3时仍需要维护遗留代码,并且许多数据分析师和机器学习专家最近才加入Python生态系统,直接选择了Python 3。

数字背后的故事:Python社区2017/2018年发展趋势_第13张图片

我们还询问开发人员他们如何安装和更新他们的Python文件。

数字背后的故事:Python社区2017/2018年发展趋势_第14张图片

70%的人从python.org安装Python,或者使用操作系统提供的软件包管理器,如APT和Homebrew。

Python框架,库和技术

Django是最流行的框架; 41%的Python开发人员使用它。

数字背后的故事:Python社区2017/2018年发展趋势_第15张图片

科学软件包,如NumPy,Pandas和Matplotlib合在一起紧随其后,达到39%。 其他流行的框架和库有Requests,Flask,Keras / Theano / TensorFlow / Scikit-learn等。 TensorFlow和Django在StackOverflow的最受喜爱和最需要的技术之列。

Django被76%的Web开发人员选为第一框架,而在数据科学领域工作的人中只有31%。 奇怪的是,29%的网页开发人员正在使用科学库。 这证实了两个角色之间的巨大重叠。

数字背后的故事:Python社区2017/2018年发展趋势_第16张图片

当被问及除Python以外的技术时,Jupyter Notebook的排名最高为31%,考虑到大量数据科学开发人员,这很有意义。 Docker仅以29%的速度落后2%。 按角色拆分,Docker被47%的参与Web开发的人使用,只有23%的数据科学家使用Docker。 同样,Web开发人员使用Amazon Web Services,Google App Engine,Heroku等云平台的频率是数据科学家的两倍。

比较2016年的调查结果和2017年的调查结果,Django和Flask这两个最流行的Web框架已经丢失了一些份额。 (2016年,Django的使用率为51%,2017年为41%; 2016年的Flask使用率为40%,2017年为32%)。 同时,科学库和技术框架的使用也在增长。 2016年,Anaconda,NumPy和Matplotlib(合并)的使用率为36%; 在2017年底,NumPy,Pandas,Matplotlib,SciPy和类似项目的使用率为39%,Anaconda使用率为25%。

数字背后的故事:Python社区2017/2018年发展趋势_第17张图片

当被问及他们使用哪种云平台时,云使用受访者首先将AWS排在了67%。 Google App Engine,Heroku和DigitalOcean的使用要少得多。 AWS在Stack Overflow的调查中也高度评价最喜爱和最受欢迎的平台。 我们可以列出的云平台的可能回答很有限; “其他”类别收集了13%的响应,包括Linode,PythonAnywhere,OpenShift和OpenStack。

Python开发的工具和特色

当我们询问在Python开发中对于开发实践,工具和功能的使用时,回复最多的地方是代码自动完成,代码重构,编写单元测试以及使用Python项目的虚拟环境。 NoSQL数据库,Python分析器和代码覆盖工具是最罕用的。 这些结果与2016年的数据非常相似:

数字背后的故事:Python社区2017/2018年发展趋势_第18张图片

为了找出最受欢迎的编辑器和IDE,我们提出了两个问题:“您在Python开发中考虑过哪些编辑器/ IDE?” 并允许多个答案,以及一个单一答案的问题,“你当前Python开发使用的主要编辑器是什么?” 基于对这个问题的8,000多个回复,PyCharm是最流行的工具,其次是Sublime,Vim,IDLE,Atom和VS Code。

数字背后的故事:Python社区2017/2018年发展趋势_第19张图片

:我们采取了大量步骤来消除偏见,并确保调查不倾向于使用任何特定的工具。 要详细了解调查方法以及用于分派调查的渠道,请参阅调查结果网站的原始数据部分。

Web开发人员在编辑器的喜好上与数据科学家略有不同。 Web开发人员非常喜欢PyCharm专业版,Sublime文本和Vim,而数据科学家显然更喜欢PyCharm社区版,Jupyter Notebook和Spyder。

当我们问道:“在Python编程中,你考虑过哪些编辑器/集成开发环境?” 我们了解到Web开发人员考虑最多的是Sublime Text(47%),其次是Vim(39%)和Atom(32%)。 科学开发人员最常考虑Jupyter Notebook(42%),其次是PyCharm社区版(39%),崇高文本(31%)和Vim(26%)。

我们还发现,大多数开发人员每天都使用他们的编辑器,大约五分之一每周使用他们的编辑器。

调查的原始数据

与Python及其社区的开源哲学一致,我们已经向公众提供了原始数据,我们欢迎进一步的分析和结论。我们打算在2018年和未来几年重复这项调查。我们的目标是让每年的调查差不多,以便完成纵向的数据分析。

在解析原始数据之前,请注意以下几点:数据是匿名的,没有个人信息或地理位置详情。此外,对所有开放式领域进行了裁剪,以防止通过逐字评论来识别任何个人受访者。为了帮助他人更好地理解调查的逻辑,我们用英语共享数据集,调查的问题和所有调查逻辑。我们使用不同的排序方法来回答选项(字母,随机,直接)。每个问题中都指定了使用答案选项的顺序。

我们很乐意了解您的发现!请在Twitter或其他提供@ jetbrains和@ThePSF的社交媒体上与#pythondevsurvey2017#标签分享。我们也乐于接受建议和反馈,以便下次改进。欢迎在这里提出任何意见或问题。

关键要点

2017年Python开发者调查表示了社区的基准。一些更重要的关键点有:

  • Python 3的普及率已经达到了75%,并且在迅速增长。

  • 目前从事数据科学和web开发的Python开发者一样多,但是Python在数据科学家中的迅速增长可能很快会打破这一平衡。

  • 使用Python的每5位开发者中,有4位使用Python作为主要语言。

  • Django,NumPy,pandas和Matplotlib是Python开发人员最常用的框架和库。 Jupyter Notebook和Docker是Python使用最受欢迎的技术。 AWS是最受欢迎的云平台。

  • PyCharm,Sublime,VIM,Atom和VS Code是最常用的Python编辑器。

  • 一半使用Python作为主要语言的人也使用JavaScript和HTML / CSS。 Python也经常用于SQL,Bash / Shell,C / C ++和Java。

我们希望调查结果阐明了Python开发者社区的现状,让你纵览全局,并解答了一些疑问。

你可能感兴趣的:(python)