点击上方“CSDN”,选择“置顶公众号”
关键时刻,第一时间送达!
【CSDN编者按】在之前的 TIOBE 年度榜单中,宝刀未老的 C 语言成功逆袭,成为 2017 年度编程语言。在本文中,我们综合了最具权威的 TIOBE 榜单、全球最大的求职引擎 Indeed.com、以及代码最活跃的社区之一 GitHub,对于过去一年中哪种编程语言最受欢迎?编程语言中有哪些一直屹立不倒?2018 年的语言趋势是怎样的?JavaScript 又为何会会遭到弃用?这些问题本文中我们会一一进行解答。
以下为译文:
世界因科技而驱动,各行各业因技术而得到了根本性的改变,而这些技术的核心正是编程语言。本文我们总结了 2017 年最流行和最具影响力的编程语言,对于开发者来说是一个提升技能的机会,在未来的十年都将是非常宝贵的指导。
有几百个指标可以用于衡量编程语言,本文我们只关注以下几个最权威的指标:
TIOBE:通过整合世界各地的数据来源,TIOBE 每月都会更新榜单。
Indeed.com:作为全球最大的求职引擎,Indeed 是编程工作的一个很好的衡量标准,可以帮助研究 TIOBE 中排名前 50 的编程语言职位空缺数量。
GitHub:GitHub 是当今最活跃的的代码库之一,每年他们都会创建一个年度回顾报告,分享他们程序员社区的统计数据。本文引用他们的度量标准“Pull Requests Opened”作为语言流行度的另一个指标。
本文也预测了编程语言的未来,我们使用各种各样的资源来预测增长最快的语言、最有影响力的语言、以及最有可能失去人气的语言。
最流行的编程语言
上图的 TIOBE 数据显示了截至 2017 年 12 月的前 20 种最流行的编程语言,其中百分比指一种语言所具有的“市场份额”数量,所有的语言合计 100%。如图所示,Java、C、C++ 稳居前三,市场份额较高,Python 紧随其后,市场份额较之前几年有了大幅提升。
Indeed.com 的数据显示了需求最高的编程职位, 我们从 TIOBE 索引中选取了 50 种最流行的语言,通过职位搜索进一步得出了其中岗位需求量最高的前 20 种语言。最流行的 Java 语言,其职位空缺也相应最多。不过有趣的是,类似 Apex 这些不太流行的语言也位于职位空缺的前 20 名,这可能意味着这些语言的流行趋势正在上升。
“Github年度回顾”提供了来自社区的前15名 “Pull Requests”,“Pull Requests” 是一种向开放式开发项目提交贡献的方法。Javascript 在 GitHub 上占有很大的比重,比之第二种语言提高了两倍多。2017 年,Python 通过 “Pull Requests” 超过 Java 成为第二大流行语言。
五大顶级编程语言及受欢迎原因解析
为什么这些顶尖的编程语言会如此受欢迎?以下将深入研究 Java、C、Python、JavaScript、Ruby 这五种顶级语言,了解它们是如何使用的以及人们为什么喜欢它们的原因。
Java 稳居第一
Java 自 90 年代中期创建以来,一直是最受欢迎的语言。世界上许多大型公司都使用 Java 来构建桌面应用程序和后端 Web 系统。
Java 广受欢迎的因素有很多:
可移植性:由于与平台无关的 Java 虚拟机(JVM),Java 几乎可以在所有系统上运行。此外 Java 也是最流行的 Android 语言,所以绝大多数的 Android 应用程序都是用 Java 构建的。
可扩展性:Java 是为了扩展性而设计的,所以它在初创企业中很受欢迎。而且由于 Java 是一种静态类型的语言,所以它的维护速度更快,更易于维护,而且还具有向后兼容性,这意味着旧版本的语言即使在新版本发布后也能够完美运行,不用在新版本出现时担心重写代码的问题。
社区庞大。由于庞大的用户群体,以及大量的 Stack Overflow 和 GitHub 社区,开发人员遇到的任何问题几乎都可以找到解答。
C 语言仍然流行
C 是最古老、最受欢迎的编程语言之一,这要归功于其近乎普遍的可移植性,并被包括微软、苹果、Linux 和甲骨文在内的大牌企业所选用。C 语言也是汽车、电子和其他设备中嵌入式系统最流行的语言。我们今天接触的所有东西,从手机到闹钟,基本上都受到 C 语言直接编写的影响。
那么它为什么在今天仍然很流行,甚至夺得 2017 TIOBE 榜单的年度编程语言?首先,它本质上是一种便携式汇编语言,几乎适用于所有系统。其次,C 还具有完全符合操作系统和嵌入式系统(如汽车仪表板)的特性。此外,任何程序员都能从 C 语言的学习中受益,许多在线编写和共享的算法都是在 C 中完成的。
C 语言本质上是编程语言的“通用语言”,像 C ++ 和 C# 这样的 C 类衍生品也是最受欢迎的 5 种语言之一,同样解释了为什么 C 语言今天仍然具有极大的影响力。
崛起的 Python
在过去 15 年中,Python 一直处于稳步上升中,几年前终于突破了 TIOBE 榜单的前五名,这是因为机器学习、人工智能(AI)、大数据等技术都严重依赖于 Python。此外网络安全也是我们这个时代重要的课题之一,也是由 Python 驱动的。
Python 现在还是大学里最受欢迎的入门语言,也常常被有经验的开发者列为第二或第三语言。
JavaScript 继续占主导地位
由于无处不在的网络浏览器,JavaScript 成为世界上最流行的编程语言之一,并在 GitHub 的 “Pull Requests” 榜单排名第一。
JavaScript 允许开发人员向网页添加交互式效果,它经常与 HTML 一起工作,现在单独使用 JavaScript 来构建 Web 应用程序变得越来越普遍。由于其的简单和高效,越来越多的初创公司和技术企业开始通过 Node.js 框架在后端使用 JavaScript。
创业者的最爱—— Ruby
Ruby 是科技初创公司最受欢迎的语言之一,许多硅谷独角兽都建立在 Ruby 上,包括 Airbnb、Twitch、GitHub 和 Twitter。Ruby on Rails 是一个运行 Ruby 的完整 Web 应用程序框架,它也推动了 Ruby 的受欢迎程度。
同时,Ruby 也受到许多开发人员的青睐。首先,Ruby 有一个简单漂亮的语法,可以让开发人员用更少的代码来做更多的事情。其次,Ruby on Rails 能让 Web 应用程序比其他框架花费更少的时间运行起来。
但是 Ruby 缺乏可扩展性,它是一种动态类型的语言,非常灵活。不过随着 Ruby 应用程序的增长,语言的动态性掩盖了代码错误的来源,并会大量消耗计算资源——这也是 Twitter 从 Ruby 切换到 Java 的原因。
Twitter 原来使用 Ruby,后来切换到 Java,这样可以更容易地扩展
2018 年编程语言趋势预测
根据前几年的趋势,我们确信顶级编程语言的榜单每年不会有太大的变化。那么改变会发生在哪里?
Kotlin、C 发展最快
TIOBE 每年都会盘点年度语言,近几年的获奖者是 Go(2016)、Java(2015)和 JavaScript(2014)。在 TIOBE 2017年度编程语言公布之前,Kotlin 曾与 C 一同成为了年度语言的候选者,虽然最终还是 C 获胜,但不可否认,两者都处于快速发展的阶段——最古老的 C语言(1987年),最新的 Kotlin 语言(2011年) 。
Kotlin
对于静态类型编程语言 Kotlin 来说,2017 年它经历了一系列大事件:被命名为 Android 平台的官方开发语言,不仅成为 Android 最受欢迎的移动开发平台,它还是 Windows 桌面和 Linux 之后第三大最受欢迎的开发平台。
Kotlin的受欢迎有几个原因,其中最重要的是它与 Java 的100%互操作性,以及在 Java 虚拟机(Java 是另一种官方 Android 语言)上运行的事实。Kotlin 能编译成 JavaScript,所以在前端和后端开发中很灵活。
C 语言
就像我们之前提到的那样,C 是嵌入式系统的完美语言。而且 C 还是物联网设备的顶级编程语言之一,包括可穿戴设备和汽车仪表板。随着更多的产品变得“聪明”,我们将看到 C 的使用必将继续扩大。
本土语言将会有更多走向硬件的尝试
编程语言的普及是一回事,但未来几年中哪些语言将会带来较大的影响?确定语言是否“有影响力”要查看构建于其上的技术,还要看这种语言解决固有软件问题的能力。
摩尔定律指出,计算能力将每 18 个月翻一番,而且几十年来这是计算机芯片制造商第一次没有跟上计算能力的发展。这意味着软件开发人员需要找出一种方法,以相同的计算处理能力来制作功能强大的 Web 应用程序。此外还需要考虑硬件的功耗问题,所以我们需要制造出尽可能高效的硬件和软件。
事实证明,提高速度和响应速度的功能能够编写出更高效的代码,而且我们可以预料到 Go、Swift、Rust 这样的本土语言未来将会有更多走向硬件的尝试。
JavaScript 将会失去价值?
那么 2018 年哪些语言将开始失去价值? “JavaScript。”
在过去的几年中,Javascript 已经达到了极其受欢迎的程度,所以后续的发展轨迹确实有些无处可寻。
此外还有其他因素叠加在 JavaScript 上。首先,WebAssembly 的改进给开发者提供了更多的网络语言选择。也就是说,不久的将来很多语言都会有 WebAssembly 后端。之后 JavaScript 将开始死亡,因为人们将使用他们的首选语言进行客户端 Web 开发。再加上 JavaScript 的使用混乱,一旦有了更好的 Web 选项,相信开发人员会很快抛弃它。
写在最后
编程语言驱动的技术世界,机遇与挑战并存。从机器学习到网络安全、从网络应用程序到电池供电,对于软件开发人员来说,希望本文的趋势预测能给你们带来一些指导。
但是无论技术环境怎么变,保持一颗学习进取的心是不会错的,以下盘点了一些编程语言的学习资源,希望对你们来说有用:
Java
https://www.codecademy.com/learn/learn-java
https://stackify.com/content/java/
C
https://www.learn-c.org/
https://www.amazon.com/Programming-Language-2nd-Brian-Kernighan/dp/0131103628
C++
http://www.learncpp.com/
https://hackr.io/tutorials/learn-c-plus-plus
Python
https://www.codecademy.com/learn/learn-python
https://stackify.com/best-developer-podcasts/
C#
https://mva.microsoft.com/en-us/training-courses/c-fundamentals-for-absolute-beginners-16169
https://www.learncs.org/
注意:本文归作者所有,未经作者允许,不得转载