写点什么

2020 年,你学的编程语言价值多少?

  • 2019-08-23
  • 本文字数:4116 字

    阅读完需:约 14 分钟

2020年,你学的编程语言价值多少?

编程语言是人们指导或控制机器的工具,其开发目的在于让操控机器的过程更加简单和顺畅。正因如此,数百种编程语言应运而生。然而,它们的命运却各不相同。一些语言已不复使用,或将在未来几年淘汰。相应地,一些语言将会被充分使用,还有一些崭新的编程语言正在逐渐被人们所接受。

本文选取真实可信的调查、统计数据、搜索结果以及薪资等数据,预测 2020 年编程语言的发展趋势。这篇文章将帮助初学者选择适合自己的入门语言,并指导资深人士在切换语言和继续使用当前语言之间作出选择。



我通过两个表格总结了过去五年间编程语言的潮流趋势。相关数据来源于2015—2019年Stack Overflow的调查结果。为了帮助读者更加准确地理解,我将编程语言分为两组,第一组是 2000 年以前推出的编程语言,第二组是 2000 年以后推出的语言。虽然选择 2000 年作为划分界限是随机的,但这对于理解两组语言的发展趋势非常有帮助。表格还列出了这些编程/脚本语言的起源年份与主要用途。


语言名称推出时间20152016201720182019主要场景
Javascript199554.4%55.4%62.5%71.5%67.8%Web 开发、动态脚本、客户端和服务端
Java199537.4%36.3%39.7%45.4%41.1%企业应用
Bash/Shell1971/79---40.4%36.6%自动化和系统管理
Python199123.8%24.9%32.0%37.9%41.7%通用
PHP199529.7%25.9%28.1%31.4%26.4%Web 开发、服务端
C197216.4%15.5%19.0%22.1%20.6%通用、底层开发语言
C++1980/8320.6%19.4%22.3%24.6%23.5%通用
Ruby19958%8.9%9.1%10.3%8.4%Web 开发
R19934.5%6.0%5.8%统计计算
Objective-C19867.8%6.5%6.4%7.3%4.8%通用


观察结果

从 2018 年到 2019 年,除了 Python 以外,所有语言的流行度都在下滑。


Python

Python 是过去五年以来唯一不断上升的语言。它是一种通用语言。如果有人希望在 2020 年只学习一门编程语言,并想涵盖更多的软件开发领域,可以选择 Python。


Java

Java 一直在上升,但在 2019 年有所下降,原因是 Kotlin 在 Android 平台上的普及。Java 现在属于 Oracle,而谷歌正在推广 Kotlin,因此 Java 面临着很大的挑战。事实上,由于其开发人员基础、框架和遗留应用程序,大量正在使用 Java 的公司仍会继续使用 Java。


C/C++

C 和 C++ 仍占有约 20% 的比例,由于其固有的功能和遗留系统,它将会一直存在。


JavaScript

JavaScript 的受欢迎程度,可归因于流行的 JavaScript 库和 node.js 等框架的发展。JS 是动态网站的语言。由于其活跃的开发者、Mozilla 的支持以及对库和框架,它将成为未来几年开发人员的首选。如果有人想要进行 Web 开发,Javascript 几乎是必备的。


R

由于数据分析的增长和普及,近年来,R 越来越受欢迎。但与作为通用语言的 Python 相比,它落后许多,因为 Python 拥有大量数据科学库和模块的活跃开发人员。因此,如果必须选择一个,可以选择 Python 而不是 R。但如果你希望在数据科学中有所建树,那么同时学习两门语言将是最理想的选择。


RUBY

与 PHP 一样,Ruby 作为建立后端 Web 开发的编程语言,也面临来自 JavaScript 甚至 Python 的竞争压力。因此,对于 Web 开发来说,Javascript 和 Python 将是一个不错的选择,并将提供比 Ruby 更好的灵活性。


PHP

2019 年,PHP 的流行度急剧下降,这可以追溯到服务器端对 Javascript 和 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 等语言都有用户基础,但并不那么受欢迎,所以肯定不会有上升趋势。


千言万语汇成一张图

让我们通过图表更清晰地了解顶级编程语言的发展趋势。在旧的语言堆栈中,JavaScript 远远领先于其他语言,(这要归功于 Web 开发领域的快速发展),然后 C 和 C++一起与 Java 进行竞争,结果渐渐接近。在过去五年中,Python 的流行度一直在上升,而且是唯一一门流行度不断上升的语言。新的语言越来越受欢迎,其中大部分语言都得到了跨国公司的支持,如微软、谷歌和苹果等 IT 巨头。




喜欢和受欢迎的编程语言



从上面的表图中可以看出,在五种受人喜爱的语言中,有四种来自 2000 年后的小组,只有 Python 是较老的语言,人们对 Kotlin 的喜爱是从 2017 年后 Android 开发添加 Kotlin 开始的。




从上表可以看出,人们对 Javascript 和 Python 的开发意愿在过去几年不断增长。Java 的数量急剧下降,这是因为 Kotlin 成为了 Android 应用程序开发的替代品。此外,Java 的拥有者 Oracle 改变了一些策略。


技术与编程语言的关系


从图中可以看出,最大的集群是用于 Web 开发和 JavaScript 的,它的各种框架主导着集群,这就是 JavaScript 增长的 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 和 JavaScript。C#,PHP,C / C ++也处于很安全的位置,这种趋势类似于 Stack Overflow 和 TIOBE 指数。



上图显示,2000 年后出现的新编程语言中,Kotlin,Go,Rust 和 Julia 均在排名中上升。



就业市场与薪酬

薪酬取决于产品的地理区域和需求,基于编程语言的薪资比较只是预测或估计薪资趋势的工具。我们根据目前主流的调查(2018 年的 Dice 薪资调查、2018 年和 2019 年的 Stack Overflow 调查)汇总了各种编程语言的薪资,具体如下:


Programming LanguageThe Dice salary survey (2018)Stack Overflow Survey (2018)Stack Overflow Survey (2019)
Go$132,827$66K$80K
Perl$110,678$69KNA
Shell$109,518$63K$69K
Node.js JavaScript$105,418$55K$56K
Java/J2EE$105,164NA$52K
TypeScript$103,680$60K$60K
Python$103,587$56K$63K
Ruby$ 102,086$64K$75K
Swift$ 101,631$57K$59K
C#$101,566$59K$59K


从上表可以看出,Go / Golang 在就业市场上是一项薪酬非常高的工作,在 Stack Overflow 2019 Survey 和 Dice Salary Survey 2018 的调查中排名第一。原因很简单,Go 是谷歌支持的语言,其薪资可以与谷歌的薪资联系起来。有一点要清楚,那就是价格弹性。它是一个经济术语,提供了不同场景对价格的影响。例如,产品数量少,价格上涨;产品可用性高,价格下跌。所以显然,全球平均工资并不完全是你选择语言的依据。例如,一种濒临灭绝的编程语言,仍会有少数遗留系统,因此维护这些系统的公司往往会提供高昂的薪酬,但这些语言所提供的职位数量总是很少。主流语言提供了大量工作岗位,所以平均工资会有所下降。


总而言之,语言趋势是很容易预测的,但选择一门语言学习是一个非常艰难的过程,完全取决于个人的未来规划。如果你想做 Web 开发,那就不能忽视 JavaScript;如果你想研发 Apple 的产品,你就不能忽视 Swift;如果你的兴趣是系统级编程,那么 C 和 C ++是你的首选;Python 可以让你在很多领域前进得更快,但目前主要应用于数据科学。每一种语言都将带你踏上不同的旅程。所以,请记住,首先确定你的目的地,然后再选择适合这条道路的编程语言,驰骋世界。


原文链接:


WHAT STATS & SURVEYS ARE SAYING ABOUT TOP PROGRAMMING LANGUAGES IN 2020


2019-08-23 15:0110106

评论 4 条评论

发布
用户头像
主流语言必须深入些。后续根据需求场景,如果有必要学习新语言,也快的;语言毕竟只是规则
2019-08-30 12:14
回复
用户头像
编程语言还是基础啊!多翻些老外的文章还是挺好的
2019-08-26 08:57
回复
用户头像
小孩子才分高低,大人才看利弊。事实就是,我们都知道多学一门语言并不能避免35岁被优化的命运。现实这么残酷,所以才会有人踩着别的语言去争夺话语权,才会有人去制造焦虑感。
2019-08-23 21:45
回复
用户头像
细品这篇文章中作者对不同语言的评价很有意思,网上有观点称,该文对Go和Java极尽美妙之言,而对C#非常刻薄,完全置事实于不顾。对此,你怎么看?
2019-08-23 15:55
回复
没有更多了
发现更多内容

Spring Cloud Gateway限流实战

Java 程序员 后端

Spring MVC框架:第七章:REST架构风格(1)

Java 程序员 后端

RocketMQ 千锤百炼--哈啰在分布式消息治理和微服务治理中的实践

Java 程序员 后端

【Flutter 专题】12 图解圆形与权重/比例小尝试

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 11月日更

RocketMQ源码分析之NameServer

Java 程序员 后端

Spring Boot 接入 GitHub 第三方登录,只要两行配置!

Java 程序员 后端

Spring Boot 操作 Redis 的各种实现

Java 程序员 后端

Spring Cloud 2020 版本最佳实践,你落伍了

Java 程序员 后端

Spring boot —— 创建parent工程

Java 程序员 后端

spring boot 自定义配置文件&参数绑定

Java 程序员 后端

Spring Boot 核心的 25 个注解

Java 程序员 后端

RocketMQ一行代码造成大量消息发送失败

Java 程序员 后端

SAP为Java 16贡献JEP 387 “弹性元空间”

Java 程序员 后端

Spring Boot+Mybatis+thymeleaf整合

Java 程序员 后端

Spring Cloud Gateway修改请求和响应body的内容

Java 程序员 后端

Spring Cloud:第二章:eureka服务发现

Java 程序员 后端

Serverless 如何在阿里巴巴实现规模化落地?

Java 程序员 后端

RocketMQ 主从同步读写分离机制

Java 程序员 后端

RocketMQ消息丢失场景及解决办法(1)

Java 程序员 后端

Spring @Lookup实现单例bean依赖注入原型bean

Java 程序员 后端

Spring Boot 中三种跨域场景总结,这篇必看!不看后悔系列

Java 程序员 后端

Vue进阶(幺柒伍):色彩搭配

No Silver Bullet

Vue 11月日更

fastposter 2.2.0 新版本发布 电商级海报生成器

物有本末

Java Vue 海报 fastposter 海报生成器

RocketMQ消息轨迹-设计篇

Java 程序员 后端

Spring Boot 快速入门(一)

Java 程序员 后端

Spring Boot在微服务中的最佳实践

Java 程序员 后端

RocketMQ消息丢失场景及解决办法

Java 程序员 后端

Servlet 入门

Java 程序员 后端

Spring Boot + EasyExcel 导入导出,好用到爆!

Java 程序员 后端

Spring Boot 实战(11)整合MyBatis-Plus

Java 程序员 后端

Spring Boot 集成 Elasticsearch 实战

Java 程序员 后端

2020年,你学的编程语言价值多少?_编程语言_AJIT KUMAR_InfoQ精选文章