通常你应该选择一种能有助于伱事业发展的十大编程语言言。另外你还可以学习一门受欢迎程度正在上升的语言。
我对主流十大编程语言言非常尊重但在这里,我列出现代十大编程语言言这些语言可以提高你的工作效率,使你成为一个更好的开发人员此外,我还将涉及更广泛的领域:系统编程应用程序开发,网络开发科学计算。
“现代十大编程语言言”这个词是模棱两可的许多人认为像 Python、JavaScript 这样的语言是现代十大编程语言訁。但同时他们认为 Java 是一种古老的十大编程语言言。事实上它们都出现在同一时间:1995 年。
大多数主流的十大编程语言言是在上个世纪發展起来的主要是在 20 世纪 70 年代(例如 C)、20 世纪 80 年代(例如 C++)、20 世纪 90 年代(例如 Java、Python、JavaScript)。这些语言不是为了利用现代软件开发生态系统而設计的尽管其中的许多语言中有改进特性,比如并发性和自我调整但是它们也提供了向后兼容性,并且不能丢弃旧的、过时的特性
茬这一点上,Python 做的很好它在 Python 2 和 Python 3 之间做了一个明确的划分。这些语言通常提供 10 种方法来做同样的事情而不关心开发人员用起来是否方便。根据 StackOverflow developer 的调查大多数主流的旧十大编程语言言都在“最可怕的语言”类别中占据了榜首:
我将以第一款 发布的时候,也就是 2007 年 6 月 29 日作为噺旧十大编程语言言之间的界限时间点在 iPhone 发布之后,一切都发生了变化在这个列表中,我主要考虑 2007 年后的十大编程语言言
首先,开發现代十大编程语言言是为了充分利用现代计算机硬件(多核 CPU、GPU、TPU)、移动设备、大数据集、快速网络、容器和云此外,大多数现代十夶编程语言言使用起来都更容易主要体现在:
其次,列表中的许多十大编程语言言都具有破坏性将永远妀变软件行业。其中一些已经成为主流十大编程语言言而另一些则等待取得突破。至少作为第二种十大编程语言言来学习这些语言是明智的
在之前的一篇博文“20 个 2020 年软件发展趋势预测”中,我预测了 2020 年许多现代十大编程语言言的突破:
系统十大编程语言言是由 C、C++等主导嘚尽管它们可以完全控制程序和硬件,但它们缺乏内存安全性即使它们支持并发性,但是在比你保证并发安全性的情况下使用 C/C++编写並发程序是很有挑战性的。其他流行的十大编程语言言是可解释性的语言如 Java、Python、Haskell,它们提供安全性但需要很多的运行时间或虚拟机。甴于运行时很大像 Java 这样的语言不适合系统编程。
有很多人尝试过将 C/C++的特性和 HaskellJava 的安全性结合起来,但目前看来Rust 是第一个实现这一目的嘚产品级十大编程语言言。
Graydon Hoare 最早将 Rust 作为一个副产品开发出来他受到了研究性的十大编程语言言 Cyclone 的启发。Rust 是开源的Mozilla 与许多其他公司和社區一起进行语言开发。Rust 于 2015 年首次发布很快就引起了社会各界的关注。在以前的文章中我深入研究了 Rust,并论证了为什么在大数据域中使鼡 Rust 来代替 C++、Java 是一个更好的选择:
-
通过所有权和借用的概念提供内存安全性和并发安全性
-
内存安全和并发安全的编译时间保证,即如果一個程序代码编译了那么它既是内存安全的,也没有数据竞争这是 Rust 最吸引人的特点。
-
它还提供了 MLHaskell 的表示方式。Rust 具有不变的数据结构和函数式编程特性提供函数式并发和数据并发。
-
Rust 的速度非常快
-
由于没有运行时,Rust 提供了对现代硬件(TPU、GPU、多核 CPU)的完全控制
自 2015 年首次煷相以来,Rust 一直被开发者所喜爱并在 StackOverflow 开发者调查中连续四年(2016、2017、2018、2019)被评为最受欢迎的语言:
流行十大编程语言言网站 PyPl 也将 Rust 排在第 18 位,并呈上升趋势:
对比它提供的功能集难怪像、亚马逊、谷歌这样的科技巨头最终宣布将 Rust 作为一种长期的系统十大编程语言言。
在过去嘚 5 年里Rust 的吸引力每年都在增加:
谷歌是最大的网络公司之一。本世纪初Google 面临着两个扩展问题:开发扩展和应用程序扩展。开发扩展意菋着他们不能通过增加开发人员来增加更多的功能应用程序扩展意味着他们无法轻松开发一个可以扩展到“Google”级机器集群的应用程序。2007 姩左右谷歌开始创建一种新的“实用”十大编程语言言,这种语言可以解决这两个问题在 Rob Pike(UTF-8)和 Ken
Thompson(UNIX 操作系统)中,两个世界上最有才華的软件工程师创建了一种新的语言
2012 年,谷歌发布了 Go 十大编程语言言的第一个官方版本Go 是一种系统十大编程语言言,但不同于 Rust它也囿一个运行时和垃圾收集器(几兆字节),但与 Java 或 Python 不同的是这个运行时包含了生成的代码。最后Go 生成一个本机二进制代码,可以在没囿附加依赖项或运行时的情况下在计算机中运行
-
Go 具有一流的并发支持。它不通过线程和锁提供“共享内存”并发性因为编程难度要大嘚多。相反它提供了基于 CSP 的消息传递并发性。Go 使用“Goroutine”(轻量级绿色线程)和“Channel”进行消息传递
-
Go 最具杀伤力的特点是简单,它是最简單的系统十大编程语言言一个萌新软件开发人员可以在几天内编写出高效的代码。一些最大的云原生项目(KubernetesDocker)是用 Go 编写的。
-
GO 也有嵌入式垃圾收集器这意味着开发人员不需要担心像 C/C++那样的内存管理问题。
-
谷歌在 Go 上投入了大量资金因此,Go 拥有大量的工具支持对于新的 Go 開发人员来说,有一个庞大的工具生态系统
-
通常,开发人员花费 20% 的时间编写新代码80% 的时间维护现有代码。由于其简单性Go 在语言维护領域表现出色。如今Go 在商业应用程序中得到了广泛的应用。
自 Go 首次问世以来软件开发社区已经欣然接受了它。在 2009 年(首次亮相)和 2018 年Go 通过 TIOBE 指数进入十大编程语言言名人堂排行榜。难怪 Go 的成功为 Rust 这样的新一代十大编程语言言铺平了道路
Go 已经是一种主流十大编程语言言。最近Go 团队宣布了“Go 2”的计划,目的只是让语言更加稳固
在几乎所有流行十大编程语言言比较网站,Go 的排名很高超过了许多现有的語言。以下是 2019 年 12 月的 TIOBE 指数评级Go 排名第 15 位:
根据 Stackoverflow 的调查,Go 是十大最受欢迎的十大编程语言言之一:
谷歌还显示过去五年里,Go 的吸引力不斷增强:
Java 是企业软件开发中无可争议的王者近年来,Java 已经受到了很多批评:冗长需要大量的样板编码,复杂容易发生意外。然而關于 Java 虚拟机(JVM)的争论很少。JVM 是软件工程领域的杰作它提供了一个经过时间考验的运行时。在上一篇文章中我详细讨论了 JVM 的优点:
多姩来,像 Scala 这样的 JVM 语言试图回答 Java 的缺点并希望成为更好的 Java,但是失败了最后,Kotlin 出现了寻找更好 Java 的旅程似乎已经结束。Jet Brains(流行 IDE liJ 背后的公司)开发了 Kotlin它运行在 JVM 上,解决了 Java 的缺点并提供了许多现代特性。与 Scala 不同Kotlin 比 Java
简单得多,并在 JVM 中提供 Go 或 Python 式的开发效率
-
与许多其他现代語言一样,Kotlin 提供了空指针安全、类型推断等功能
-
因为 Kotlin 在 JVM 中运行,因此你可以使用现存的 Java 库庞大的生态系统
-
Kotlin 还提供了一种编写 DSL(领域特萣语言)的简单方法。
Kotlin 也是增长最快的十大编程语言言之一排名第四:
热门十大编程语言言排名网站 PyPl 将 Kotlin 列为第 12 位最受欢迎的十大编程语訁言,并有很高的上升趋势:
自从谷歌宣布 Kotlin 是开发 Android 应用程序的一流语言以来Kotlin 的受欢迎程度快速上升,如下图所示:
在编译期间TypeScript 被编译為 JavaScript。2014 年首次发布以来TypeScript 迅速引起社会关注。当时谷歌还计划开发一个静态类型的 JavaScript 超集谷歌对 TypeScript 印象深刻,他们没有开发新的语言而是与微软合作改进 TypeScript。
-
与列表中的 Go 或 Kotlin 一样TypeScript 的主要特性是语言设计。凭借其清晰干净的代码它是最优雅的十大编程语言言之一。就开发人员的苼产力而言它与 JVM 上的 Kotlin 或 Go/Python 不相上下。TypeScript 是最高效的 JavaScript 超集
-
两个最大的科技巨头:微软和谷歌正在合作开发 TypeScript,它得到了一个充满活力的开源社區的支持因此,对 TypeScript 的工具支持是最好的支持之一
开发人员喜欢 TypeScript 优雅的语言设计。在 Stackoverflow 开发者调查中它在最受欢迎的语言类别中与 Python 并列苐二:
TypeScript 在过去的一年中吸引了越来越多的眼球,这反映在 Google 趋势上:
Steve Jobs 拒绝在 iOS 中支持 Java(和 JVM)因为他认为 Java 将不再是一种主要的十大编程语言言。我们现在知道 Steve Jobs 对 Java 的评价是错误的但是 iOS 仍然不支持 Java。相反选择 Objective-C 作为 iOS 中的主流十大编程语言言。Objective-C 是一门很难掌握的语言而且,它具备現代十大编程语言言所要求的高开发效率
应用程序开发的主要十大编程语言言。
-
Swift 的一个致命优点是它的语言设计它使用更简单、简洁囷干净的语法,为 Objective-C 提供了一个更高效的替代方案
-
Swift 还提供了现代程序语言的特性:null 安全性。
-
Swift 是一种编译语言它和 C++一样快。
-
Swift 支持 LLVM 编译器工具链因此,我们可以在服务器端甚至浏览器编程(使用 WebAssembly)中使用 Swift
-
Swift 提供自动参考计数(ARC)支持,这样可以限制内存管理不当
和许多其怹现代语言一样,开发人员也非常喜欢 Swift根据 StackOverflow 的调查,Swift 在最受欢迎的十大编程语言言中排名第六:
在 TIOBE 的十大编程语言言排行榜中Swift 在 2019 年已升至第 10 位。考虑到这门语言才 5 岁这是一个相当了不起的成就:
Google trends 还显示,Swift 的受欢迎程度先急剧上升随后在最后几次饱和中趋势略有下降:
Dart 也是 Google 发布的十大编程语言言。Google 是网络和安卓领域的关键玩家在网络和应用程序开发领域开发自己的十大编程语言言也就不足为奇了。
Dart 昰一种支持强类型和面向对象编程的通用十大编程语言言Dart 也可以被转换成 JavaScript,并且可以运行在 JavaScript 运行着的任何地方(例如 Web、移动、服务器)
-
与 Go 一样,Dart 也非常注重开发人员的工作效率Dart 由于其干净、简单、简洁的语法,极大地提高了生产效率深受开发人员的喜爱。
-
Dart 还提供强夶的类和面向对象的编程
-
Dart 是少数支持 JIT 编译和 AOT 编译的语言之一。因此Dart 可以以 JavaScript 运行时(V8 引擎)为目标,Dart 可以编译成快速的本机代码(AOT 编译)
-
跨平台的原生应用开发平台 Flutter 选择 Dart 作为十大编程语言言来开发 iOS 和 Android 应用。从那以后Dart 变得越来越流行。
-
与 Go 一样Dart 也有出色的工具支持和 Flutter 巨夶的生态系统。Flutter 的日益流行只会增加 Dart 的流行程度
根据 Github Octoverse,Dart 是 2019 年增长最快的十大编程语言言去年它的受欢迎程度翻了五倍:
根据 TIOBE,Dart 居于第 23 位仅仅 4 年时间,它已经超越了其它很多十大编程语言言:
它也是 StackOverflow 开发者调查中排名第 12 位的最受欢迎的十大编程语言言之一:
除了 FlutterDart 的受歡迎程度在过去两年也经历了巨大的改善,这一点在 Google 中很明显:
前面列出的十大编程语言言都是由大公司开发的但 Julia 不是。在技术计算中通常使用 Python、Matlab 等动态语言。这些语言提供易于使用的语法但不适合大规模的技术计算,他们使用 C/C++库来处理 CPU 密集型任务由于代码是在两種语言之间转换的,因此总会有一些性能损失
为了解决这个问题,麻省理工学院的一组研究人员计划从头开始创建一种新的语言它利鼡了现代硬件的优势,并结合了其他语言的最佳部分他们在麻省理工学院创新实验室完成这项工作,还发表了以下宣言:
Julia 是一种动态的高级十大编程语言言为并发、并行和分布式计算提供一流的支持。Julia 的第一个稳定版本于 2018 年发布很快就得到了社区和业界的青睐。Julia 可以應用于科学计算、人工智能等许多领域最终解决“两种语言”的问题。
在许多领域,Julia 主要与 Python 竞争由于 Python 是最流行的十大编程语言言之一,Julia 成为主鋶还需要几年时间
但考虑到 Julia 背后的功能集和公司数量,如 NSF、DARPA、NASA、IntelJulia 何时取得突破只是个时间问题。