最新发布《数智时代的AI人才粮仓模型解读白皮书(2024版)》,立即领取! 了解详情
写点什么

Rust 兴起,Python 兴趣正浓丨 InfoQ 编程语言趋势报告

  • 2019-10-29
  • 本文字数:5534 字

    阅读完需:约 18 分钟

Rust兴起,Python兴趣正浓丨InfoQ编程语言趋势报告

关于编程语言的讨论从来没有停止,尽管如此,每一场讨论依旧会引起开发者的广泛关注。从 PC 时代,到移动互联网时代,再发展到云计算时代,技术趋势的改变让编程语言不断调整着自己的定位。InfoQ 英文站的编辑们按照技术采用生命周期的理论对各大编程语言在现阶段的发展趋势进行了分析,Rust 兴起,Python 兴趣正浓。

本文要点

  • 趋势报告中出现了 Elixir 的身影,它现在处于创新者试用阶段,这是在 Erlang 虚拟机上运行的函数式并发型通用编程语言。

  • 业界的兴趣与创新正在越来越多地投向基础设施感知或云特定的语言、DSL 和 Ballerina 与 Pulumi 之类的 SDK。

  • 我们认为,Rust 已从创新者过渡到了早期使用者阶段,这很大程度上源自它在基础设施和网络数据平台(如 Habitat 和 Linkerd 2.0)中取得的应用进展。

  • Python 的受欢迎程度仍在增长,主要归功于它在数据科学和教学中的应用。

  • 用于 iOS 开发的 Swift 已进入早期流行阶段,主要是因为作为移动应用程序运行时的 iOS 广泛流行。尽管 Kotlin 是列在 JVM 趋势报告中的,但它在 Android 应用程序开发领域也进入了类似的早期流行阶段。

  • 至于 .NET,我们看到了业界对 .NET Core 的浓厚兴趣,并且随着 .NET Core 3 的到来,我们预期这种情况会继续下去。



2019 年及以后的编程语言趋势是怎样的?这份报告旨在帮助技术领导者制定中长期技术投资决策,并帮助个人开发者找出哪些编程语言正在流行,选择在哪里投资他们宝贵的时间和资源、学习哪些新的编程语言和开发哪些技能。


这份报告总结了 InfoQ 编辑团队目前对编程语言领域中技术的流行程度和新兴趋势的看法,但不包括Java/JVM和 JavaScript/Web开发领域,这两者有独立的报告。本报告也是一份意见汇总,是由我们的编辑(他们是活跃的软件工程师)进行的广泛内部讨论、对外部公开调查结果的评论以及对内部或私人的调查和分析结果的评论汇集而成的。下文列出了多位编辑对话的摘录。


我们认为,InfoQ 和 QCon 所关注的主题都可以归结为创新者、早期使用者和早期流行三大阶段。我们要做的是找出与 Geoffrey Moore所说的早期市场相匹配的理念,在这种市场中“客户群由希望发掘机遇或解决眼前问题的技术爱好者和有远见的人们组成。”我们也在寻找有能力“跨越鸿沟”而进入广泛应用阶段的理念。值得一提的是,在这种情况下,技术在应用曲线上的确切位置可能会有所不同。例如,Rust可能在旧金山湾区的企业中已经广泛应用,但在其他地方可能就没那么流行了。


自从我们发布 2018 年内部编程趋势报告以来,我们的报告也有了一些明显的变化,其中包括加入了几种语言(如 Python、Ruby 和 PHP 等)的趋势跟踪;之前虽然这些语言很受欢迎,但我们并未公开跟踪它们的应用曲线。以前我们是在内部讨论与这些语言相关的技术和要素,而现在我们的趋势图上也有了它们的位置。

发展中的编程语言:Elixir、Rust 和 Swift

Elixir是一种函数式并发通用编程语言,是趋势报告上的新面孔,目前处于创新者试用阶段。Elixir 构建在 Erlang(我们将其纳入创新者试用类别)之上,并在 Erlang 虚拟机中运行。Elixir 和 Erlang 共享相同的抽象,这些抽象用于构建分布式容错应用程序。


我们认为,Rust 已从创新者迈入了早期使用者阶段,很大程度上是受其在基础设施和网络数据平台(例如HabitatLinkerd 2.0)中应用的推动。该语言也正逐渐成为WebAssembly的公认搭配选择,这也提高了它的知名度。此外,我们注意到 Facebook 选择使用 Rust 来实现其Libra加密货币。


用于 iOS 开发的Swift已进入早期流行阶段,主要是因为作为移动应用程序运行时的 iOS 的普及。尽管我们没有在这份趋势报告中跟踪 Kotlin,但是InfoQ Java和JVM趋势报告发现 Kotlin 的受欢迎程度有所提高,因为 Kotlin 现在已成为开发 Android 应用程序的默认语言。

基础设施语言:Ballerina、Pulumi 和 Dark

我们发现业界对与基础设施/以云为目标的语言、DSL 和BallerinaPulumi等 SDK 的兴趣正在日益增加。我们也在跟踪Dark,它目前处于内部测试阶段,因此尚不够资格进入趋势图。此类技术目前稳稳地处在创新者试用阶段,但我们还在密切关注它们,并将于 11 月在旧金山 QCon 上专门讨论“基础设施语言”。


作为参考,下面是我们 2018 年下半年的内部趋势图。2019 年的版本在本文开头。



编程语言趋势 2018

.NET 2019 第三季度

至于说到 .NET,我们注意到业界对 .NET Core 产生了浓厚兴趣;随着 .NET Core 3 的到来,我们预计这种情况会继续下去。我们在图表中将 .NET Core 分为 2.x 分支和 3.x 分支,因为它们在应用方面位于不同的位置。谈到.NET 语言,我们预期 C#8 将迅速普及。我们对 F#还是很感感兴趣,也在追踪它,但我们认为它的复杂性和缺乏来自微软的大力支持,意味着它不太可能获得更广泛的应用。


我们将 ASP .NET Core 放在早期流行阶段。如今我们认为大多数新的 Web 工作都是在ASP.NET Core上完成的,但不一定是 .NET Core。现有的一部分应用程序正在移植,但大多数应用是不会移植过去的。WCF 在企业中仍然非常重要,但微软并没有在 .NET Core 中很好地支持它。我们已经将 Visual Basic 移到了过时阶段,实际上我们现在将它视为爱好者才会考虑的语言。



以下是一些 InfoQ 编辑团队的内部对话的摘录,做了简短编辑和汇总,这些摘录也为趋势图上的定位工作提供了更多参考。


蒂米什瓦拉技术大学计算机与自动化学院的助理教授,InfoQ 编辑Abel Avram


JetBrains 发布了他们的《2019年开发人员生态系统现状》,调查了 7,000 名开发人员并得出以下结论:

Java——最受欢迎的主要编程语言

JavaScript——最常用的整体编程语言

Go——最有前途的编程语言

Python——被研究最多的语言

Go 最初在 2017 年占有 8%的份额,现在已经达到了 18%。此外,开发人员选择他们想要使用或迁移到的语言时,Go 的占比最大(13%)。

StackOverflow在今年对Python发表了这样的评论:“Python 是增长最快的主要编程语言,在我们的编程语言调查中排名再次上升,今年超越了 Java 成为第二受欢迎的语言(仅次于 Rust)。”


Arthur Casals,研究人工智能/多智能体系统领域的计算机科学研究员:


从我最近所见/所读的内容来看,Rust 的普及步伐似乎正在加快。不过,它仍然(某种程度上)处于边缘地带,并被视为“C++的替代品”。但是,随着它的可用库数量的增加,且更多有影响力的用户也开始使用 Rust,我认为把它放在"早期使用者"阶段是很合适的。


Elixir 似乎正在蓬勃发展,尤其是在巴西——其实这种语言的创造者是巴西人,并且那里至少有一家新的独角兽企业(Movile)正在公开使用它(此外教育领域的 Quero 等其他新兴公司也是它的用户) 。


我最近看到了一些有关 Elixir 的讨论,尤其是他们找到了 Quero 的人担任小组成员,讲述他们如何从头开始应用 Elixir 的故事之类,之后这种讨论就越来越多了。还有一个很好的案例来自 Discord 的工程师们,他们最近写了一篇结合Rust和Elixir为 1100 万并发用户提供后端支持的文章。这是一个很棒的现实场景,既涉及语言也涉及一款非常流行的应用程序,这无疑壮大了它们的声势。


SitePen 首席执行官和 Dojo 联合创始人Dylan Schiemann


Rust 正处于早期使用者阶段,在我看来它的逐渐流行很大程度上是因为 WebAssembly 甚至是Servo


尽管 Go 受关注有一段时间了,但我仍将它归在早期使用者阶段。语言的生命周期比框架之类长很多,我确实不认为 Go 已经达到了主流应用阶段。同样,Elixir 和 Elm 也会被定为早期使用者阶段。


我很少听人提起 Pony 这门语言,在我看来现在它还处于创新者阶段。


Swift 是 iOS 应用程序的默认入口点,因此可能已经进入早期流行阶段。


至于说基于云的 IDE,CodeSandbox 和 StackBlitz 在过去的一年中,因其基于浏览器编辑的出色功能集合以及与本地开发工具的集成而取得了显著的使用率增长。


在停滞了几年之后 Dart 似乎开始复苏,主要归功于 Flutter。


InfoQ 总编辑Charles Humble


我把 Swift 提升到了早期流行阶段——我认为这种趋势正在加速,而且考虑到 WWDC 的一些新发布内容——尤其是 Swift UIKit——我们正在进入苹果平台的“Swift 时代”。


我觉得我们也可以将服务端 Swift 移至早期使用者阶段。管中窥豹,我和一些了解它的人们交流时,他们告诉我它正在稳定增长,并且有很多好东西是由开源的swift-nio驱动的;这反过来又提升了已经迁移到它上的几个服务端框架的性能。


Rust 在过去一年中的增长是无可置疑的,我把它从创新者提升到了早期使用者阶段。他们一直很好地将其定位为 Wasm 的合作伙伴,我认为这很有用。


我不好说 Go 是什么情况。它仍在增长,但我感觉它还没有达到早期流行阶段的程度;虽说可能会引起争议,但我会把它留在早期使用者中。


我听到了更多人在讨论 Elixir,但我认为它仍然是创新者阶段。它仍然处于边缘市场。


我们还应该加上 Python,并且应该放在早期流行阶段里。它的受欢迎程度一直在持续增长,这主要是受它在数据科学家中广泛流行的推动,而且我认为我们对这门语言的讨论还不够多。


我认为 Pony 无法走出创新者阶段;这很遗憾。我喜欢这门语言,虽然我发现它的类型系统相当复杂,也确实认为这是一项令人印象深刻的工作,但是它的社区仍然很小。现在我会把它从跟踪列表中删掉。


我终于听到了更多有关 Dark 的信息,尽管它是处于内测阶段。这在基础架构语言应用更加广泛的环境中是很有趣的事情。


Wolfram 的软件管道工Werner Schuster


关于 Swift:确实还处于发展初期,但是 Swift for TensorFlow(S4TF)可能成为 Swift 的一大卖点,并且可能是 Python 的潜在竞争对手(至少在这个领域)。


这里有一篇非常详尽而有趣的文档,说明了为什么要使用Swift而不是其他语言。背后的作者是 Chris Lattner,他现在在 TensorFlow 进行这方面的研究;Chris 还尽力而为,在为所有场景创建IR(MLIR)


S4TF 这个名字有点无趣,而且没法看出来所有的有趣内容(AD 等)。


关于 Python:我对 Python 的发展很感兴趣;显然,它已成为许多数据科学/ML 原生库的首选粘合语言,从中受益匪浅——这是十年前的 Ruby 直到开始没落都没能搞明白的事情。


另一方面,Python 一直在抵制其运行时的任何形式的现代化(有人记得 Unladen Swallow 吗?),更不用说关于解释器的一堆历史超过十年的项目了(没有一个搞出了名堂)。


我认为 Jython 也死了。上次我检查它的网站时它已经多年没有更新了,离 Python 3.x 差得远。


基础架构语言:似乎有一种新趋势是将一些语言(其中一些新面孔)耦合在一起部署。


Pulumi&co——TypeScript


Ballerina


Unison语言——由前 Scala/Haskell 员工开发的一种新的函数式语言,但是完全没有 Monad;现在它还非常年轻


Dark语言——尚未公开发布


我很好奇所有这些语言的前景会是什么样的;可能有的只是昙花一现,也有可能成为未来 15 年中一些必不可少的语言特性迈出的第一步(就像子程序成为语言特性的历史)。


我们可能正在见证一个全新的,不可逆转的由 Wasm 统治的未来(浏览器和服务端的 WASI 等),以及原生(VM、容器和无服务器)层面的新浪潮,这将降低 JVM/字节码的吸引力,并让所有人只需使用语言的原生版本(已经开发了数十年的规范版本)。需要明确的是,我上面所说的并没有真正涉及 JVM 原生语言,例如 Clojure、Scala 或 Kotlin 等。


New Relic 的首席工程师兼 JVM 技术架构师Ben Evans


Elixir 中有点东西。我并不是特别喜欢它——虽然它足够好用,但是除非你需要 BEAM VM 的实际优势(容错性和大量分布的简单事物),否则它似乎并没有很大的好处。


该语言的大多数爱好者之所以喜欢它,似乎是因为它是“新亮点”,和/或他们有 Java 过敏症(通常基于一些对这个平台过时十年以上的老观念),但是……我还没有看到任何令人信服的证据,证明有什么事情是 JVM 技术无法轻易完成的(尽管可能会需要更多步骤)——而且 JVM 与库的集成度更高,范围更广。


Dustin Schultz,首席软件工程师,Pluralsight 的作者和技术推广者:


在过去的几年中,我发现 Python 有了长足发展。正如其他人所说,我认为这在很大程度上归功于数据科学、学校/大学的教学以及诸如 Flask(与 Django)之类的更轻便的框架。


我没有关于 Python 的任何负面看法(实际上我很喜欢编写它),但是我认为它的受欢迎程度并不代表企业场景中的流行。我很少看到用 Python 编写的大型分布式企业应用程序仍然在使用 Python。它们可能始于 Python,但由于性能原因最终会切换到其他语言上。


Charles Humble:就核心框架而言,自 2012 年以来它似乎有所改进——我认为很多工作都集中在 .NET Core 上。我的感觉是 .NET Core 已从创新者转变为早期使用者阶段。我想知道我们是否应该在 .NET Core 3 登陆时拆分它,将 .NET Core 3 重新引入创新者阶段,并将 .NET Core 2 引入早期使用者状态。


同样,我认为 C#应该会进入早期流行时期——其实我觉得这没什么争议可言。


我认为 F#与 JVM 上 Clojure 的发展轨迹类似——在我看来这是一门可爱的语言,但是我看不出它有什么迹象继续扩张下去。同样,我也看不到使用率下降的多少可能性。


毕马威(KPMG)的软件架构师和 InfoQ 的 .NET 首席编辑 Jonathan Allen:


谈到社区,F#有两个问题:


它没有来自微软的强大支持


领导层致力于以易用性为代价追求 C#兼容性


它正在变得越来越复杂,这是计算机科学家喜欢的。但是,真正教学 F#的培训人员主要面对非程序员,他们需要的是一门脚本语言。因此额外的复杂性使他们的工作更加困难。


我也认为 C#8 将很快到达早期使用者阶段。人们一直在要求可空的引用类型……起码从 .NET 1 就开始呼吁了。


讨论中涉及的其他公开可用的研究和调查包括:“RedMonk编程语言排名:2019年6月”和 IEEE Spectrum 的“2019年顶级编程语言


原文链接Programming Languages InfoQ Trends Report - October 2019


2019-10-29 09:023500

评论

发布
暂无评论
发现更多内容

跟着Apple、Google大佬学优化

admin

小程序 微信 性能优化 缓存;

架构实战营4期-模块6作业

木几丶

「架构实战营」

PyTorch:常见错误 inplace operation

强劲九

Python 人工智能 机器学习 深度学习 PyTorch

架构实战营 4 期第六模块作业

jialuooooo

架构实战营

回归分析中的道与术

whatever

数据分析预测

Paxos 与 Raft 区别

努力努力再努力

Bug Bash:Bug大扫除的正确用法

石云升

bug 1月月更 Bug Bash

使用Cloud Application Programming模型开发OData的一个实际例子

Jerry Wang

API abap Cloud Studio 1月月更

[架构实战营] 模块七作业

Geek_0ed632

「架构实战营」

模块六课程作业

李晓笛

架构实战营第 4 期第 6 课作业:拆分电商系统为微服务

owl

架构实战营

「按需引入」的多种实现方式

百瓶技术

前端 webpack babel 按需加载

架构实战营 第 4 期 模块六作业

架构实战营 模块六 「架构实战营」

微信朋友圈高性能复杂度分析

李大虾

#架构实战营 「架构实战营」

模块六作业

Anlumina

架构实战营

「架构实战营」模块六《如何设计业务的微服务架构》作业

DaiChen

作业 模块六 「架构实战营」

【优化技术专题】「系统性能调优实战」终极关注应用系统性能调优及原理剖析(上册)

洛神灬殇

Linux 性能调优 1月日更 系统优化 技术分析

架构实战营模块六作业

zhongwy

架构实战营

【架构实战营】模块六:命题作业

wgl

「架构实战营」

拆分电商系统为微服务

AUV

「架构实战营」

如何写好一个Java方法?

蜜糖的代码注释

Java 后端开发 写好代码

聊聊 JDBC 的 executeBatch || 对比下不同数据库对 JDBC batch 的实现细节

明哥的IT随笔

数据库 性能优化 MySQL 数据库

2022新年Flag:用未来可能会发生的事情推断今天该做的事

宇宙之一粟

flag 1月月更

模块六

Geek_59dec2

架构

中间件厂商宝兰德加入,龙蜥社区迎来新伙伴

OpenAnolis小助手

Linux 开源

儿童成长自律表

wood

300天创作

架构训练营模块六作业

沈益飞

架构训练营

作业:架构实战营模块 6

Poplar89

「架构实战营」

Linux之kill命令

入门小站

Linux

百度吴甜做客央视《对话》:AI技术加持显著降低数字人生产成本

百度大脑

模块六作业-拆分电商系统为微服务

CH

#架构实战营 「架构实战营」

Rust兴起,Python兴趣正浓丨InfoQ编程语言趋势报告_语言 & 开发_Charles Humble_InfoQ精选文章