Rust:超越Python、JS和C,成为最受欢迎的编程语言

发表时间: 2018-07-31 19:43

无论何时,编程语言的流行度都是一个经典且火热的讨论话题。而怎样衡量流行度?如果两种语言的目标和适用人群迥异,该如何较出高下?事实上,有许多方法可以衡量编程语言的流行度。例如,可以查看 StackOverflow、内部论坛、Twitter、Google 趋势上的话题热度增长,或者根据各种语言流行度报告来判断。每种衡量方法都有各自的优势和劣势。

在本文中,我们将窥探曾经在 Stack Overflow 年度开发者调查报告中成功逆袭 Kotlin、Python、JavaScript 成为最受欢迎的编程语言—— Rust 的未来发展趋势,以及剖析它流行的原因。

下面我们将关注一些数据,用这些数据展示语言的用途,而不是热度(即讨论 Rust 的人数)。如果人们使用某种语言完成实际工作,那才是语言成功的真正标志。

Rust 是什么?

Rust 是由 Mozilla 开发的注重安全、性能和并发性的编程语言。自 2015 年 5 月发布 1.0 之后,一直以每 6 周一个小版本的开发进度稳定向前推进。Rust 受到了 Cyclone(C 的一种安全方言,一种命令式语言)的重大影响,包含来自 C++ 的面向对象特性的一些方面。但是,它也包含来自 Haskell 和 OCaml 等语言的函数特性。结果,我们获得了一种支持多模式编程(命令、函数和面向对象)的类似 C 的语言。

Rust 及其家谱

接下来我们看看开源界的 Rust 使用情况,为此我们来看看 GitHub。

GitHub 上的成长

GitHub 提供了几种办法来衡量特定语言的增长情况。GitHub 自己使用特定语言的拉取请求次数,这也是GitHub Octoverse(
https://octoverse.github.com/)中使用的数据。

查询 2018 年到目前为止的话,那么 PR 数最多的 15 种语言是:

  1. JavaScript: 1736476
  2. Python: 804790
  3. Java: 703649
  4. Ruby: 560430
  5. PHP: 359040
  6. C++: 319324
  7. TypeScript: 311229
  8. Go: 258131
  9. C#: 246513
  10. CSS: 236795
  11. Shell: 168301
  12. C: 160889
  13. Swift: 67664
  14. Scala: 67188
  15. Rust: 52936

Rust 作为 Swift/Scala/Rust 一组排名第十五。这个排名挺不错。列表上的所有其他语言都是在实际应用中使用频率非常高的语言,而不是娱乐性质的语言。

第十五名这个名次也很重要,因为如果 Octoverse 今天生成的话,Rust 将第一次进入排名。

我们继续来看。关注 PR 数量的一个缺陷就是,少量非常成功的项目会给结果造成偏差。这些流行项目的 PR 数非常高,因此它所用的语言会排名很靠前。为了避免这个问题,我们还要看看“活跃项目数”。这里我们定义“活跃项目数”为:

  • 比“hello world”大的项目;
  • 至少有一个星;
  • 最近 30 天内有活动。

排名如下:

  1. JavaScript: 56437
  2. Python: 37554
  3. Java: 27912
  4. C++: 16787
  5. PHP: 16451
  6. Shell: 12245
  7. C#: 11503
  8. C: 10662
  9. Go: 8816
  10. CSS: 8781
  11. TypeScript: 8447
  12. Ruby: 7518
  13. Swift: 3828
  14. Objective-C: 3054
  15. Rust: 2604
  16. Kotlin: 2343
  17. Scala: 2072

这个排名中 Rust 的结果也不错。同样,这里都是正式项目中用到的语言。

GitHub 的数据给出了一个排名,而其他地方是不是有同样的排名?由于 Rust 如此流行,我们希望看看它在业界的流行程度。

Rust 的商业用户

过去一年间,Rust 在商业应用上有着令人惊讶的成长。下面是部分人们熟知的名字:

  • 亚马逊:用 Rust 构建工具(https://github.com/amzn/askalono)。
  • Atlassian(Jira的厂商):在后台使用 Rust(https://github.com/rust-lang/rust-www/pull/922)。
  • Dropbox:在前端和后台都使用Rust(https://air.mozilla.org/rust-meetup-may-2017/)。
  • Facebook:源代码控制工具(https://twitter.com/Sunjay03/status/1019782490800603136)。
  • Google:作为 Fuchsia 项目的一部分(https://github.com/fuchsia-mirror?utf8=%E2%9C%93&q=&type=&language=rust)。
  • 微软:在新的 Azure 物联网框架中部分使用了Rust(https://twitter.com/maxgortman/status/1012011425353461760)。
  • npm:一些 npm 核心服务中使用了 Rust(https://github.com/rust-lang/rust-www/pull/634)。
  • Red Hat:用 Rust 建立新的存储系统(https://github.com/stratis-storage)。
  • Reddit:用 Rust 进行评论处理(https://www.reddit.com/r/rust/comments/7utj4t/reddit_is_hiring_a_senior_rust_engineer/)。
  • Twitter:用 Rust 作为构建团队支持的一部分(https://twitter.com/stuhood/status/978410393944047617?s=19)。

在 Rust 的合作伙伴(
https://www.rust-lang.org/en-US/friends.html)的列表中还能看到更多熟悉的名字,如百度、Wire、Mozilla、三星、Cloudflare、Chef、Canonical 等等。

在业界,软件公司开始在某种程度上接受 Rust。如大家期待的那样,最初可能是实验性质的使用,主要用 Rust 做构建工具、后台处理,或者针对某个特定的平台,如物联网。早期的用户如 Dropbox、Canonical 现在已经过了最初的尝试阶段,开始在更多代码中使用 Rust。

这一切都说明,现在依然是 Rust 的早期阶段。大公司在广泛接受新技术之前需要花很多时间去尝试。我们在接受曲线中看到了 Rust 的身影,而且它表现得很不错。像 Go 和 TypeScript 等近几年爆炸式增长的语言当初也有类似的表现。

由于 Rust 和 C++ 很相近,我们还应该看看那些传统上由 C++ 开发者组成的公司的情况。这个行业其中之一就是游戏开发。

游戏开发行业的情况

尽管游戏行业主要使用发展成熟的技术,Rust 也开始在游戏开发者中占据一席之地。下面是 Rust 用户中游戏开发者们熟悉的名字:

  • 呵呵鱼游戏工作室 - 在多个即将发布的游戏中使用Rust(https://www.rust-lang.org/pdfs/Rust-Chucklefish-Whitepaper.pdf)。
  • 电子艺界 - 在SEED中使用Rust(https://twitter.com/ZigguratVertigo/status/1021562281056980993)。
  • 寒霜引擎 - 使用Rust做后台处理(https://twitter.com/Ca1ne/status/983612241235804160)。
  • Ready at Dawn工作室 - 所有新开发都使用Rust(https://twitter.com/AndreaPessino/status/1021532074153394176)。
  • Unity - 在数据工程中使用Rust(https://twitter.com/bltroutwine/status/1002234680949719040)。

我们还看到其他独立开发者在自己的游戏中使用Rust(
https://twitter.com/SergiusIW/status/1021236971786694656)。

跟前面的情况类似,我们在游戏开发者中也看到了相似的情况。最初的使用目标很明确,主要用于后台处理或与数据相关的项目。之后,Rust 会逐渐进入核心开发领域,甚至用 Rust 开发整个游戏。

工作

在进行 2017 年 Rust 问卷调查(
https://blog.rust-lang.org/2017/09/05/Rust-2017-Survey-Results.html)时,人们不使用 Rust 的很大原因之一就是公司不使用。当时还没有使用 Rust 的工作。

2018 年,随着越来越多的公司和工作室开始接受 Rust,这个现象有没有好转呢?

简单来说,是的,尽管还有很大的增长空间。快速浏览下 LinkedIn 上的工作数量,可以看出 Amazon 等公司以及许多与区块链、安全、科学、健康等有关的公司都提供相当数量的 Rust 工作机会。当然,与 Go 或 TypeScript 等语言的工作机会相比,仍然有很大的差距。

看完公司使用 Rust 的情况,Rust 社区的发展情况又如何?

社区和统治

在过去,语言可以单独靠商业开发来支持。但现在,语言的社区才是语言的基础。社区能带来新用户,支持新项目,并给项目的发展方向定下基调。

全世界有 130 多个 Rust 开发者见面会

Rust 社区中的个人部分——见面会,在过去九个月内增长了 30%,现在在全世界有 130 多个。我们可以看到,这些会议的数量有着稳步增长,从而用户可以获得更多的培训机会和网络。

我们还看到,与上次报道相比(
http://www.jonathanturner.org/2017/10/fun-facts-about-rust-growth.html),在线社区也有显著的增长。例如,Rust reddit 论坛最近超过了四万用户(九个月之前才有两万九千用户),GitHub 代码库有了三万星(从九个月前的 24000 星增长),官方 Rust 推特有了将近三万一千粉丝(九个月前为两万四千)。

这种热情也影响了统治 Rust 的团队。综合来看,Rust 团队在过去九个月内增长了一倍,现在在不同的团队内拥有 100 多个岗位(
https://www.rust-lang.org/en-US/team.html)。范围也增大了许多,新的团队现在覆盖了基础设施、开发者体验和依赖管理等。

结论

本文只是 Rust 在业界和软件开发社区中的一些使用数据。从这些数据很难推断出整体的途径,更难预测到未来的情况。但即使如此,我们已经能看到 Rust 的曙光。

Rust 的明天会怎样?每个人都会有不同的看法。就我个人而言,我会继续观望并为 Rust 喝彩。你怎么看呢?

原文:
http://www.jonathanturner.org/2018/07/snapshot-of-rust-popularity.html

作者:Jonathan Turner,Mozilla工程师。

译者:弯月,责编:屠敏

“征稿啦!”

CSDN 公众号秉持着「与千万技术人共成长」理念,不仅以「极客头条」、「畅言」栏目在第一时间以技术人的独特视角描述技术人关心的行业焦点事件,更有「技术头条」专栏,深度解读行业内的热门技术与场景应用,让所有的开发者紧跟技术潮流,保持警醒的技术嗅觉,对行业趋势、技术有更为全面的认知。

如果你有优质的文章,或是行业热点事件、技术趋势的真知灼见,或是深度的应用实践、场景方案等的新见解,欢迎联系 CSDN 投稿,联系方式:微信(guorui_1118,请备注投稿+姓名+公司职位),邮箱(guorui@csdn.net)。