- 原文地址:Top 7 Modern programming languages to learn now
- 原文作者:Md Kamaruzzaman
- 译文出自:掘金翻译计划
- 本文永久链接:github.com/xitu/gold-m…
- 译者:lihaobhsfer
- 校对者:impactCn、司徒公子
来看看 Rust、Go、Kotlin、TypeScript、Swift、Dart、Julia 能如何促进你的职业生涯发展,提升你的软件开发技能
如果我们把人类现代文明比做一辆车,那么软件开发行业就像汽车的发动机,编程语言就像发动机的燃料。你该学习哪门编程语言呢?
学习一门新的编程语言需要投入大量时间、精力和脑力。但是,就如我在另一篇文章中所写,学习一门新的编程语言能够提升你的编程技能,加速你的职业发展 2020 年学一门新的编程语言的五大理由
一般来讲,我们需要选择一门对你职业发展有益的编程语言。与此同时,我们也需要选择受欢迎程度正在上升的语言。这意味着你应该选择较成熟的、广受好评的语言来学习。
我很尊敬主流编程语言。但在这篇文章中我将推荐给你一系列能够提高生产力、助你升职加薪、成为更优秀的开发者的现代编程语言。同时,我会涉及到许多领域:系统编程、app 开发、web 开发、科学计算。
现代编程语言这一术语定义比较模糊。许多人认为如 Python、JavaScript 这样的语言是现代编程语言,认为 Java 是比较老的语言。而实际上,他们问世的时间都在 1995 年前后。
多数主流编程语言都是在上个世纪开发的,主要在七十年代(例如 C 语言)、八十年代(如 C++)和九十年代(如 Java、Python 和 JavaScript)。这些语言的设计方式,不能很好利用现代软件开发的生态系统:多核 CPU、GPU、高速网络、移动设备、容器和云端。尽管它们中的很多语言都有诸如并发一类的改进特性,并在不断适应新时代,但是他们也需要向下兼容,因此无法抛弃老旧过时的特性。
在这一方面,Python 在 Python 2 和 Python 3 之间就划分得很清楚,做得很好(或者很差,这取决于上下文)。这些语言通常提供 10 种方式来做同样的事情,这对开发者很不友好根据 StackOverflow 上的一个调查,主流的比较老的编程语言在 最令人望而生畏的编程语言 中都位居前列:
我认为老编程语言和新的编程语言的界限可以定在 2007 年 6 月 29 日,第一代 iPhone 的发布日。在那之后,整个科技产业前景都改变了。我将主要讨论 2007 年以后的编程语言。
首先,现代编程语言开发出来是为了最大化利用现代计算机硬件(多核 CPU、GPU、TPU)、移动设备、大数据、高速互联网、容器和云端的优势。并且,多数现代编程语言对开发者更加友好,提供了大量如下特性:
其次,本榜单中的许多编程语言是颠覆性的,将永远改变软件行业。他们中有些已经是主流编程语言,而另一些则有望取得突破。至少作为第二编程语言来学习这些语言是明智的。
在之前发表的文章《关于 2020 年软件开发趋势的 20 项预测》中,我预测了 2020 年会有很多现代编程语言取得突破:关于 2020 年软件开发趋势的 20 项预测
系统编程语言领域被非常接近硬件层的 C 和 C++ 霸占。它们让你全权控制程序和硬件,但缺少内存安全。就算它们支持并发,用 C 或者 C++ 写并发程序也因没有并发安全而非常困难。其他编程语言是如 Java、Python 和 Haskell 这样的解释型语言。它们安全,但是需要的运行时间很长、或者依赖虚拟机。过长的运行时间使得像 Java 这样的语言不适合系统编程。
不乏想要结合 C 或 C++ 的强大功能和 Java、Haskell 的安全性的尝试。Rust 或许是首个成功做到这一点的生产级编程语言。
Graydon Hoare 起初仅仅将 Rust 作为业余项目开发。他受到用于科研的编程语言 Cyclone 的启发。Rust 是开源的,Mozilla 与许多其他公司和社区一起领导 Rust 语言的开发。Rust 在 2015 年首次亮相,并迅速受到社区的关注。在之前一篇文章中,我更加深入地探讨了 Rust 并指出为何在大数据领域它比 C++ 和 Java 更好: 回归硬件:2019 年用于开发大数据框架最好的 3 门编程语言
关键特性:
受欢迎程度:
自 2015 年问世以来,Rust 就被广大开发者接受,并在 StackOverflow 开发者调查中连续四年(2016-2019)被选为最受喜爱的语言:
根据 Github Octoverse,Rust 是增长第二快的编程语言,仅次于 Dart:
并且,Rust 在编程语言排名网站 PyPl 排在第 18 名,并呈上升趋势。
看看它提供的特性,难怪像微软、亚马逊、谷歌那些科技公司巨头都发布声明,会将 Rust 作为长期系统编程语言进行投资。
谷歌趋势显示,过去五年里,Rust 获得的关注持续增长:
主要使用场景:
主要竞争语言:
谷歌是最大的互联网公司之一。在本世纪初,谷歌面临着两个规模化问题:开发规模和应用规模。开发规模的意思是他们不能够再简单地通过增加开发人员来添加更多新特性。应用规模的意思是他们无法简单地开发一个能够扩大到“谷歌级”计算机集群的规模的应用。2007 年前后,谷歌提出了一个新的“务实的”编程语言,以解决这两个规模化的问题。在 Rob Pike (UTF-8) 和 Ken Thompson (UNIX 系统),他们拥有全世界两个最具天赋的软件工程师来开发一门新语言。
2012年,谷歌发布了 Go 语言的第一个官方版本。Go 是一个系统编程语言,但是和 Rust 不同。它有运行时环境和垃圾回收(几 Mb 大)。但是不像 Java 和 Python,这个运行时环境是打包在生成的代码里的。最后,Go 生成一个可以在机器上无需依赖或者运行时环境的原生二进制代码。
关键特性:
受欢迎程度:
从 Go 首次问世以来,软件开发社区就对它敞开怀抱。在 2009 年(在它发布不久后)和 2018 年,根据 TIOBE 指数,Go 都进入了编程语言名人堂名单。Go 的成功为如 Rust 一样的新一代编程语言铺路,也不足为奇。
Go 已经是一个主流编程语言。最近,Go 团队对外宣布了他们在 Go 2 上的进展,这使得这门语言更加坚挺。
在几乎所有编程语言对比网站上,Go 都排名靠前并且超过了很多语言。在 2019 年 12 月的 TIOBE 指数 排名中 Go 排在第 15 位:
根据 StackOverflow 调查,Go 是最受欢迎的十大编程语言之一:
根据GitHub Octoverse,Go 也是发展最快的十大编程语言之一:
谷歌趋势也显示,Go 在过去五年中受关注程度在上升:
主要应用场景:
主要竞争语言:
Java 企业级软件开发无可争议的霸主。近期,Java 受到了不少批评:代码量大,需要写很多模板代码,容易一不留神就发现程序过于复杂。然而,没有谁对 Java 虚拟机(JVM)评头论足。JVM 是软件工程界的一项佳作,是经历了行业战场和时间双重历练的运行时环境。在一篇文章中,我详细讨论了 JVM 的优势: 统治数据密集型(大数据 + 高速数据流)框架的编程语言
近几年来,像 Scala 运行在 JVM 环境中的语言,试着解决 Java 的短板,想要成为更好的 Java,却以失败告终。不过最后,从 Kotlin 之中可以看出,似乎对一个更好的 Java 的寻找可以告一段落了。Jet Brains(开发 IntelliJ 这款热门 IDE 的公司)开发了 Kotlin,它运行在 JVM 上,并提供很多现代特性。最好的一点是,不像 Scala,Kotlin 比 Java 精简很多,并且能够在 JVM 平台上提供像 Go 和 Python 一样的开发效率。
谷歌宣布将 Kotlin 作为开发安卓系统的首选语言,提升了 Kotlin 在社区中的接纳程度。并且,热门 Java 企业级框架 Spring 也从 2017 年开始在 Spring 生态中支持 Kotlin。我配合响应式 Spring 使用过 Kotlin,体验相当不错。
主要特性:
受欢迎程度:
从 2015 年首次发布以来,Kotlin 的火热程度直线上升。在 StackOverflow 上,Kotlin 在 2019 年人们最爱的编程语言中位列第四:
Kotlin 也是上升最快的编程语言之一,在其中同样位列第四:
PyPl 上,Kotlin 在最火编程语言中排名 12 位,且有很高的上升趋势:
由于谷歌宣布了将 Kotlin 作为安卓应用开发首选语言,Kotlin 在谷歌趋势中有积极上涨。
主要应用场景:
主要竞争语言:
JavaScript 是一门优秀的语言,但 2015 以前的 JavaScript 有不少缺点。连著名软件工程师 Douglas Crockford 都写了一本书《JavaScript 语言精粹》并指出 JavaScript 有糟糕之处。不支持模块化,加上“回调地狱”,开发者尤其不愿意维护那些大型的 JavaScript 项目。
谷歌甚至开发了一个将 Java 代码转为 JavaScript 的平台(GWT)。很多公司或个人尝试开发更好的 JavaScript,如Coffee Script、Flow、ClojureScript,但是来自微软的 TypeScript 夺得头魁。微软的一个工程师团队,在著名的 Anders Hejlsberg(Delphi、Turbo Pascal、C# 的发明者)的带领下,开发了 TypeScript,作为一种静态类型、模块化的 JavaScript 超集。
TypeScript 会在编译时转为 JavaScript。在 2014 年首次发布后,它很快获得了社区的关注。谷歌当时也在计划开发一个提供静态类型检查的 JavaScript 的超集。谷歌被 TypeScript 惊艳,从而由策划开发一门新语言转为与微软合作来改进 TypeScript。
谷歌将 TypeScript 作为它 SPA 框架 Angular2 的主要编程语言。同样,热门 SPA 框架 React 也提供 TypeScript 支持。另一热门 JavaScript 框架 Vue.js 也宣布在新的 Vue.js 3 中使用 TypeScript 开发。
并且,Node.js 的创造者 Ryan Dahl 决定使用 TypeScript 来开发一款安全的 Node.js 替代品,Deno。
关键特性:
受欢迎程度:
开发者因 TypeScript 优雅的语言设计而热爱它。在 StackOverflow 开发者调查中,它与 Python 在最受喜爱的编程语言榜单上并列第二:
TypeScript 是上升最快的语言之一,在 GitHub Octoverse 上位列第五:
TypeScript 在 GitHub 贡献上位列前十(第七名):
TypeScript 每年都吸引更多的眼球,在谷歌趋势上就有所体现:
主要应用场景:
主要竞争语言:
史蒂夫·乔布斯拒绝在 iOS 平台上支持 Java(和 JVM),并曾引用过一句著名的话:Java 再也不是一个主流编程语言。我们现在知道他对 Java 的评价是错的,然而 iOS 还是没有支持 Java。相反,苹果选择用 Objective-C 作为 iOS 平台的首选语言。Objective-C 想要精通很难。并且,它的开发者高生产力的支持也不够好,达不到现代编程语言的要求。
在苹果,Chris Lattner 等人开发了 Swift,作为一个多范式、通用编译编程语言,作为 Objective-C 的备选项。Swift 的首个稳定版本发布于 2014 年。Swift 也支持 LLVM 编译器工具链(同样由Chris Lattner)开发。Swift 可以很好地与 Objective-C 代码共存,并且已经成功确立了 iOS 平台应用首选开发语言的地位。
主要特性:
受欢迎程度:
像其他很多现代编程语言一样,开发者也喜爱 Swift 编程语言。根据 StackOverflow 调查,Swift 在最受喜爱编程语言中排名第六位:
在 TIOBE 编程语言排名中,Swift 在 2019 年排在第十。考虑到这门语言多么年轻(只有 5 年),这已经很优秀了:
谷歌趋势也显示了 Swift 迅猛的上升趋势,不过近些日子有些下降:
主要使用场景:
主要竞争语言:
Dart 是本榜单中谷歌开发的第二个语言。谷歌是 Web 和 Android 领域的关键参与者,因此它在这些领域开发了自己的编程语言不足为奇。由著名丹麦软件工程师 Lars Bak(带领了 Chrome 浏览器的 V8 JavaScript 引擎)带领,谷歌在 2013 年发布了 Dart。
Dart 是一门通用编程语言,支持强类型和面向对象编程。Dart 也可以被转为 JavaScript,并在 JavaScript 的运行环境中运行 —— 几乎任何地方(网页、移动端、服务器)。
主要特性
受欢迎程度
根据 GitHub Octoverse, Dart 是 2019 年增长最快的编程语言,其受欢迎程度在过去一年中涨了五倍:
根据 TIOBE 指数,Dart 排在第 23 位,并在短短四年中超过了其他很多已有的现代编程语言:
它也是最受喜爱的编程语言之一,在 StackOverflow 开发者调查中排名第 12 位:
根据谷歌趋势,和 Flutter 一起,Dart 在近两年也获得了很多的关注:
主要使用场景:
主要竞争语言:
本榜单中多数编程语言都由大公司开发,Julia 除外。在技术型计算中,通常使用 Python、Matlab 这样的动态语言。这些语言提供易用的语法,但是不适于大型的技术运算。人们通常使用 C 或 C++ 的库来进行 CPU 密集型任务,由此导致了双语言问题,因为他们需要胶水代码来绑定两个语言。由于代码需要在两种语言之间翻译,就会有性能损失。
为了解决这一问题,一群 MIT 的研究人员计划从头开发一门新的语言,能够利用现代硬件,并且结合其他语言的优点。他们在 MIT 创新实验室,在下图中的宣言的指导下工作:
(图片译文:……我们想要一门开源、拥有自由协议的语言。我们想要它有 C 一样的速度,和 Ruby 一样的动态性。我们想要它具有同像性,像 Lisp 一样有真正的宏,但是也像 Matlab 一样有显而易见的、熟悉的数学标记。我们想要它和 Python 一样可以用于通用编程,和 R 一样对统计学友好,有像 Perl 一样自然的字符串处理,在线性代数上像 Matlab 一样强大,像 shell 脚本一样长于将程序粘合在一起。(我们想要)一个极易学习、却又能让那些硬核黑客开心的语言。我们让它可以交互,还想让它是编译语言。)Julia 是动态的高级编程语言,提供顶尖的并发、并行及分布式计算支持。Julia 的首个稳定版本在 2018 年发布,并很快受到了社区和产业界的关注。Julia 可以用于科学计算、人工智能以及很多其他领域,并可以解决双语言问题。
特性:
受欢迎程度:
Julia 主要和 Python 在多个领域竞争。由于 Python 是当下最流行的编程语言,Julia 需要几年时间才会成为主流。
Julia 相对更年轻(只有一年),但是仍能在 TIOBE 上排名第 43 位:
谷歌趋势也显示了近年来稳定的关注。
考虑到它的特性集,以及诸如NSF(美国科学基金会)、DARPA(美国国防部高级研究计划局)、NASA(美国航天局)、英特尔这些背后支持 Julia 的组织和公司,Julia 取得突破也只是时间问题,而不是能否的问题。
主要使用场景:
主要竞争语言:
如果发现译文存在错误或其他需要改进的地方,欢迎到 掘金翻译计划 对译文进行修改并 PR,也可获得相应奖励积分。文章开头的 本文永久链接 即为本文在 GitHub 上的 MarkDown 链接。
掘金翻译计划 是一个翻译优质互联网技术文章的社区,文章来源为 掘金 上的英文分享文章。内容覆盖 Android、iOS、前端、后端、区块链、产品、设计、人工智能等领域,想要查看更多优质译文请持续关注 掘金翻译计划、官方微博、知乎专栏。