编程语言是人类控制电脑的手段,所以绝大多数编程语言都试图使这个过程更加强大和简单。也正因此这个领域诞生了数百种编程语言,不过其中许多编程语言目前已经不再使用,还有一些可能在未来几年里会过时,然而还有很多语言将不断发展,在目前以及未来都占有重要的位置。
比较编程语言是一件非常复杂的事,因此我们创作了很多好玩的图片或段子用来表达对各种编程语言的定义,本文就以下图开始吧:
下面提供的两个表格总结了过去五年(2015-2019)里编程语言的流行趋势。该数据来自 2015-2019 年的 Stackoverflow 人气调查。
为了清楚准确地理解,我们将编程语言分为两组,第一组是 2000 年以前诞生的语言,第二组是 2000 年以后诞生的语言。将 2000 年作为边界是随机的选择,但对于理解这两组编程语言的趋势非常有帮助。该表还列出了这些编程/脚本语言的起源年份和主要应用领域。
第一组观察结果
除了 Python 之外,从 2018 年到 2019 年所有语言的流行度都在下降。
1. Python
Python 是过去五年来人气不断上升的唯一语言。这是一门通用语言,如果你希望在 2020 年只学习一门编程语言,并希望涵盖更广泛的软件开发领域,不妨考虑 Python。
2. Java
Java 的市场占有率一直在不断上升,但在 2019 年有所下降,原因是背靠 Google 的 Kotlin 在 Android 开发领域获得了极大的普及。毫无疑问 Java 是一个不错的选择,但它现在属于 Oracle 公司,由于公司的商业利益冲突,谷歌正在推广 Kotlin。
事实上,由于使用 Java 的庞大开发群体、框架和遗留应用程序,大量公司仍在使用 Java 并将继续使用 Java。
3. C/C++
C 和 C++ 仍然保持着大约 20% 的市场占有率,并且由于其固有的功能和遗留系统,它将会继续存在。
4. JavaScript
JavaScript 的受欢迎程度可归因于诸如 Node.js 等流行的 JavaScript 库和框架的增长。JavaScript 是用于构建动态网站的语言,它将成为未来几年 Web 开发的首选语言。而且,如果我们想要进行 Web 开发,绝对无法绕开 JavaScript。
5. R 语言
R 语言近年来越来越受欢迎,原因在于数据分析需求的增长和普及。R 语言主要是数据科学家在使用,与 Python 这种通用语言相比,它拥有贡献了大量数据科学库和模块的活跃开发者。不过如果只能选一个的话,相信更多的数据科学家会倾向于 Python。
6. Ruby
与 PHP 一样,在 Web 开发的后端构建方面,Ruby 也面临来自 JavaScript 甚至 Python 的激烈竞争。因此,对于 Web 开发而言,JavaScript 和 Python 会是比 Ruby 更好的选择(Python 的服务端框架 Flask 和 Django),而且更加灵活。
7. PHP
2019 年,PHP 流行度急剧下降,这可以追溯到服务器端对 JavaScript 和 Python 的接受程度。如果有人想要进行服务器端 Web 开发,PHP 仍然是一个很好的选择 —— 有大量流行的框架,如 CakePHP,Codeigniter 等,否则选择通用编程语言会更好。
8. Objective-C
在 Apple 迁移到 Swift 语言之前,Objective-C 是开发 Apple 软件(如 macOS,iOS 等平台)的主要语言。因此,这种转变反映在两种语言的流行中,即 Objective-C 的受欢迎程度下降,而 Swift 的普及率正在上升。所以,如果有人希望成为 Apple 产品的开发者,Swift 理所当然应该是首选语言。
第二组观察结果
1. Swift
Swift 取代了 Objective-C 作为 Apple 相关软件和应用程序开发的主要语言。
由于 Apple 的支持推广,因此自成立以来 Objective-C 的受欢迎程度越来越高,Apple 也将继续使用它。如果有人正在寻找特定于 Apple 的开发平台,那么 Swift 将成为一种必须知道的编程语言。不过 Swift 主要是面向特定供应商和产品的语言,在 Apple 生态系统之外的使用率非常低。
2. Go
Google 不断地在维护、使用和推广 Go 语言。而它最初的开发动机是解决对一些流行语言的不足,同时将最好语言的特性集于一身。
自 2017 年以来,Go 的受欢迎程度越来越高,并且在 Google 的支持下,它在未来几年内都将会继续保持高速发展。Google 也将 Go 作为新项目的主要语言并用 Go 取代其他语言,这种趋势在未来几年会继续保持,因此如果想学习一门新的编程语言,Go 值得拥有。
3. Kotlin
Kotlin 最初作为用于 Android 开发的 Java 替代方案而迅速“上位”。凭借着 Android 的增长、Google 的支持以及其简洁的语法,它成为了 Android 开发者的一个可选方案,更是学习 Android 开发的不错选择。Kotlin 将成为 Android 开发的“最优”方案。
4. Scala
Scala 试图取代 Java,但开发者似乎不太认可。它没有来自任何大公司的大力支持,另外,由于 Scala 是一门函数式编程语言,以及对 JVM 的依赖,使得它并没有得到太多的普及,虽然会有稳定的增长,但速度很慢,而且肯定不是适合初学者学习的语言。
5. Julia
Julia 旨在将 C 的速度和 Python 的简便集成在一起,但奇怪的是,在 Stackoverflow 调查中并没有体现 Julia 的受欢迎程度,但它在数据科学领域颇受欢迎,并且从长远来看它也被视为 R 和 Python 的挑战者。当然,Julia 会继续增长,但对于工作和成长来说,Python 或 R 更好。
6. C#
C# 是用于 .NET 框架的编程语言,由微软开发。它的受欢迎程度在过去几年中基本保持不变,并将继续保持类似的趋势。这是特定于供应商的语言,因此如果需要在微软提供的开发环境中工作,可以选择此语言。最近,微软已开源 .NET,因此它会出现一些上升趋势,但它毕竟是特定于供应商的,因此不会受到太大影响。
7. Rust
Rust,Clojure 等是具有用户基础但不那么流行的语言,所以人气方面不会有太大的上升。
一图胜千言
要了解头部编程语言增长的清晰趋势和现状,可通过各种图表来了解它。下图描绘了一个非常清晰的现状,即在旧的语言栈中,JavaScript 远远领先于其他的语言,并且将继续在 Web 开发中占据一席之地。C 和 C++ 共同与 Java 竞争,并且非常接近后者的地位。
Python 的受欢迎程度也越来越高,而且在过去的五年里,它是唯一一个人气不断上升的语言。
新语言越来越流行,其中大多数语言都受到跨国公司如微软、Google 和 Apple 等 IT 巨头的支持。
开发者喜欢和希望学习的语言
从上面的表格和图表我们可以看到,喜欢 Rust 的人数在过去五年中正在逐步增长,而 Swift 慢慢失去了开发者的喜爱,Python 则处于这两者之间。
另一个独特的观察结果是,开发者喜爱的 5 门语言中有 4 门来自 2000 后诞生的编程语言,且只有 Python 是较旧的语言,对 Kotlin 的喜爱则是从 2017 年 Google 官方支持它作为 Android 开发的一级语言开始。
从上表可以看出,开发者使用 JavaScript 和 Python 进行开发的愿望在过去几年中不断增长,这反映了大众对这两门语言的喜爱。另外,Java 在这方面的数据则出现了急剧下降的趋势,这是因为 Kotlin 成为了 Android 开发的替代方案,以及 Oracle 对使用 Java 的政策发生了变化。
技术和编程语言
在此图中,我们可以看到最大的簇集是 Web 开发和 JavaScript 以及它们的各种框架。第二大簇集是微软技术和 Python 技术,这里又再次印证开发者对该语言的欢迎和热爱。其中 Python 技术的簇集主要与数据科学技术相关,这些技术与 Python 的增长息息相关。
TIOBE 指数
用于对编程语言进行排名的 TIOBE 指数基于搜索引擎的搜索结果。在 TIOBE 指数中, Java 在过去二十年中一直占据主导地位,C 在过去三十年里也一直保持着第一或者第二的位置。而在过去的二十年里, Python 的排名飞速增长,从 1999 年的第 24 名,到 2019 年的第 3 名。
在新语言(2000 年后诞生)中,Rust 的排名上升明显,从第 33 位升至第 28 位,Julia 也从第 50 位升至第 39 位。值得注意的是,Kotlin 似乎从未进入过前 20 名。
PYPL 指数
PYPL 指数的来源主要是通过分析语言在 Google 上的搜索频率。被搜索得越多意味着该语言就越受欢迎。原始数据来自 Google Trends。
由下图可见,TOP 3 的编程语言分别是 Python, Java 和 JavaScript。C#, PHP 和 C/C++ 也处于头部位置,这种趋势类似于 Stackoverflow 的语言流行度和 TIOBE 指数。
上图显示,在新的编程语言中,即 2000 年后诞生的 Kotlin, Go, Rust 和 Julia,它们的排名也在不断上升。
就业市场与薪酬
薪酬取决于产品的地理区域和需求,基于编程语言的薪资比较只是预测或估计薪资趋势的工具。我们根据编程语言的流行调查对薪资进行了汇总,即 2018 年的 Dice 薪资调查和 2018 年和 2019 年的 Stackoverflow 薪资调查。
从上表可以看出,Go 开发是市场上薪酬非常高的工作,在 2019 年的 Stackoverflow 调查和 2018 年 Dice 薪资调查中,它都在高薪工作中排名第一。原因其实很简单,因为 Go 是 Google 支持的语言,主要用于 Google 内部,另外 Google 希望推广这种语言所以自然会用高薪来吸引开发者。
这里要提一个经济术语——价格弹性,企业对岗位的需求具有弹性,这就导致岗位的薪酬不稳定。因此很明显,全球平均工资不是选择语言的合理因素。
假如存在一门接近衰亡的编程语言,但应用它的遗留系统很少,因此为了维护这些产品,公司往往提供非常高的薪酬,不过这些职位总是十分稀有。另一方面,由于主流语言提供了大量的工作岗位,平均工资自然就会下降。
作为结束语,可以看到预测编程语言的趋势十分简单,但只选择一门语言来学习是一个非常艰难的抉择,这完全取决于个人选择和他们未来的计划。
例如,如果你想从事 Web 开发工作,那么你就不能忽视 Javascript;如果你想从事 Apple 产品的开发工作,绝对不能无视 Swift;如果你青睐于系统的底层开发,那么 C 和 C++ 会是你的好朋友。Python 则会让你在很多领域跑得更快,不过目前主要用于数据科学。
所以,每种语言都会带您踏上不同的旅程。选择目的地,你需要做的就是使用通往终点的语言。