编程语言是人们指导或控制机器的工具,其开发目的在于让操控机器的过程更加简单和顺畅。正因如此,数百种编程语言应运而生。然而,它们的命运却各不相同。一些语言已不复使用,或将在未来几年淘汰。相应地,一些语言将会被充分使用,还有一些崭新的编程语言正在逐渐被人们所接受。
本文选取真实可信的调查、统计数据、搜索结果以及薪资等数据,预测 2020 年编程语言的发展趋势。这篇文章将帮助初学者选择适合自己的入门语言,并指导资深人士在切换语言和继续使用当前语言之间作出选择。
我通过两个表格总结了过去五年间编程语言的潮流趋势。相关数据来源于 2015—2019 年 Stack Overflow 的调查结果。为了帮助读者更加准确地理解,我将编程语言分为两组,第一组是 2000 年以前推出的编程语言,第二组是 2000 年以后推出的语言。虽然选择 2000 年作为划分界限是随机的,但这对于理解两组语言的发展趋势非常有帮助。表格还列出了这些编程 / 脚本语言的起源年份与主要用途。
观察结果
从 2018 年到 2019 年,除了 Python 以外,所有语言的流行度都在下滑。
Python
Python 是过去五年以来唯一不断上升的语言。它是一种通用语言。如果有人希望在 2020 年只学习一门编程语言,并想涵盖更多的软件开发领域,可以选择 Python。
Java
Java 一直在上升,但在 2019 年有所下降,原因是 Kotlin 在 Android 平台上的普及。Java 现在属于 Oracle,而谷歌正在推广 Kotlin,因此 Java 面临着很大的挑战。事实上,由于其开发人员基础、框架和遗留应用程序,大量正在使用 Java 的公司仍会继续使用 Java。
C/C++
C 和 C++ 仍占有约 20% 的比例,由于其固有的功能和遗留系统,它将会一直存在。
Java
Java 的受欢迎程度,可归因于流行的 Java 库和 node.js 等框架的发展。JS 是动态网站的语言。由于其活跃的开发者、Mozilla 的支持以及对库和框架,它将成为未来几年开发人员的首选。如果有人想要进行 Web 开发,Java 几乎是必备的。
R
由于数据分析的增长和普及,近年来,R 越来越受欢迎。但与作为通用语言的 Python 相比,它落后许多,因为 Python 拥有大量数据科学库和模块的活跃开发人员。因此,如果必须选择一个,可以选择 Python 而不是 R。但如果你希望在数据科学中有所建树,那么同时学习两门语言将是最理想的选择。
RUBY
与 PHP 一样,Ruby 作为建立后端 Web 开发的编程语言,也面临来自 Java 甚至 Python 的竞争压力。因此,对于 Web 开发来说,Java 和 Python 将是一个不错的选择,并将提供比 Ruby 更好的灵活性。
PHP
2019 年,PHP 的流行度急剧下降,这可以追溯到服务器端对 Java 和 Python 的接受。但如果有人想要进行服务器端 Web 开发,PHP 仍是一个很好的选择,因为它有大量流行的框架,如 CakePHP,Codeigniter 等。对于其他类型的开发,选择通用编程语言会更好。
OBJECTIVE-C
在 Apple 转向到 Swift 之前,Objective-C 是 Apple 软件(如 MacOS,iOS 等)的主要语言。根据流行程度数据,Objective-C 的受欢迎程度在下降,而 Swift 则在上升。因此,如果有人想成为 Apple 的开发者,Swift 应该是首选语言。
观察结果
Swift
Swift 已经取代了 Objective-C 作为 Apple 相关软件和应用程序的主要语言。由于苹果公司的支持和推广,从诞生到现在,它的受欢迎程度不断提高,而且苹果公司还将继续推广,所以如果有人正在寻找苹果公司特有的开发工作,那么 Swift 将是他必须知道的编程语言。这门语言主要针对特定的供应商和产品,所以很少在苹果生态系统之外使用。
GO
Go(Golang)在维护、使用和推广方面越来越受到 Google 的欢迎。其开发目在于解决一些流行语言的问题,并吸收各种语言的精华。自 2017 年以来,Go 的人气不断上涨。在谷歌的支持下,它还将持续这一趋势。在未来几年,Go 将变得越来越易用,因此可以选择 Go 作为一门新的学习对象。
KOTLIN
Kotlin 正在成为替代 Java 的 Android 开发语言,它也受到了谷歌的支持和推动,逐渐受到开发者的青睐,在近年来越来越受欢迎。随着 Android 的发展,Google 的支持,它将成为 Android 开发人员和学习者的理想选择。Kotlin 将成为 Android 开发中的一门杰出的编程语言。
SCALA
Scala 在试图替代 Java,然而在开发人员中并没有取得很好的效果。它没有来自任何跨国公司的大力支持,被认为是一种函数式语言,对 JVM 的依赖并没有提供太大的普及空间。它可能会有稳定的增长,但速度很慢,并且肯定不是初学者学习语言的好选择。
JULIA
Julia 旨在拥有 C 语言的速度和 Python 的简单。奇怪的是,它在 Stackoverflow 的调查中并没有受到关注。但它在数据科学领域很受欢迎,并且从长远来看被视为 R 和 Python 的挑战者。虽然,Julia 会有增长,但 Python 或 R 更适合工作和发展。
C#
C#是 .NET 框架的语言,由 Microsoft 开发。它的受欢迎程度在过去几年几乎保持不变,并将继续保持这一趋势。这是特定于供应商的语言,因此如果想要在 Microsoft 开发环境中工作,可以选择该语言。最近,微软已开源 .NET 的源代码,所以会有一些上升趋势,但它同样是特定于供应商的,所以不会受到太大影响。
RUST
Rust、Clojure 等语言都有用户基础,但并不那么受欢迎,所以肯定不会有上升趋势。
千言万语汇成一张图
让我们通过图表更清晰地了解顶级编程语言的发展趋势。在旧的语言堆栈中,Java 远远领先于其他语言,(这要归功于 Web 开发领域的快速发展),然后 C 和 C++ 一起与 Java 进行竞争,结果渐渐接近。在过去五年中,Python 的流行度一直在上升,而且是唯一一门流行度不断上升的语言。新的语言越来越受欢迎,其中大部分语言都得到了跨国公司的支持,如微软、谷歌和苹果等 IT 巨头。
喜欢和受欢迎的编程语言
从上面的表图中可以看出,在五种受人喜爱的语言中,有四种来自 2000 年后的小组,只有 Python 是较老的语言,人们对 Kotlin 的喜爱是从 2017 年后 Android 开发添加 Kotlin 开始的。
从上表可以看出,人们对 Java 和 Python 的开发意愿在过去几年不断增长。Java 的数量急剧下降,这是因为 Kotlin 成为了 Android 应用程序开发的替代品。此外,Java 的拥有者 Oracle 改变了一些策略。
技术与编程语言的关系
从图中可以看出,最大的集群是用于 Web 开发和 Java 的,它的各种框架主导着集群,这就是 Java 增长的 USP。第二大集群是由微软技术和 Python 技术组成的,这些技术再次证明了该语言的流行。Python 集群与数据科学技术相结合,突出了 Python 的发展历程。
TIOBE 指数
TIOBE 指数是根据搜索结果得出的编程语言排名。它通过计算最受欢迎的搜索引擎的点击量来计算评级。使用的搜索查询是 +“< language> programming”。在 TIOBE 指数中, Java 在过去二十年间始终占据主导地位。而 C 在过去三十年始终保持着第一或第二的位置。Python 在过去二十年里取得了长足的进步,从 1999 年的第 24 位跃升到 2019 年的第 3 位。如果将 C 和 C++ 的结果合并,那么它将永远占据第一的位置。
在新的语言(2000 年后)中,Rust 的排名有所提升,从第 33 位升至第 28 位。Julia 从第 50 位升至第 39 位。值得注意的是,Kotlin 似乎并未进入前 20 名。
PYPL 指数
PYPL 指数是通过分析编程语言教程在谷歌的搜索频率得出的。某一语言教程被搜索得越多,就越受欢迎。这是一个主要指标,原始数据来自 Google Trends 。
下图表明了最受欢迎的三种语言分别是 Python,Java 和 Java。C#,PHP,C / C ++ 也处于很安全的位置,这种趋势类似于 Stack Overflow 和 TIOBE 指数。
上图显示,2000 年后出现的新编程语言中,Kotlin,Go,Rust 和 Julia 均在排名中上升。
就业市场与薪酬
薪酬取决于产品的地理区域和需求,基于编程语言的薪资比较只是预测或估计薪资趋势的工具。我们根据目前主流的调查(2018 年的 Dice 薪资调查、2018 年和 2019 年Stack Overflow 调查)汇总了各种编程语言的薪资,具体如下:
从上表可以看出,Go / Golang 在就业市场上是一项薪酬非常高的工作,在 Stack Overflow 2019 Survey和 Dice Salary Survey 2018 的调查中排名第一。原因很简单,Go 是谷歌支持的语言,其薪资可以与谷歌的薪资联系起来。有一点要清楚,那就是价格弹性。它是一个经济术语,提供了不同场景对价格的影响。例如,产品数量少,价格上涨;产品可用性高,价格下跌。所以显然,全球平均工资并不完全是你选择语言的依据。例如,一种濒临灭绝的编程语言,仍会有少数遗留系统,因此维护这些系统的公司往往会提供高昂的薪酬,但这些语言所提供的职位数量总是很少。主流语言提供了大量工作岗位,所以平均工资会有所下降。
总而言之,语言趋势是很容易预测的,但选择一门语言学习是一个非常艰难的过程,完全取决于个人的未来规划。如果你想做 Web 开发,那就不能忽视 Java;如果你想研发 Apple 的产品,你就不能忽视 Swift;如果你的兴趣是系统级编程,那么 C 和 C ++ 是你的首选;Python 可以让你在很多领域前进得更快,但目前主要应用于数据科学。每一种语言都将带你踏上不同的旅程。所以,请记住,首先确定你的目的地,然后再选择适合这条道路的编程语言,驰骋世界。