打败 Python、JS、C# 成最受欢迎编程语言,是时候掌握 Rust 了吗?
无论何时,编程语言的流行度都是一个经典且火热的讨论话题。而怎样衡量流行度?如果两种语言的目标和适用人群迥异,该如何较出高下?事实上,有许多方法可以衡量编程语言的流行度。例如,可以查看 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 种语言是:
JavaScript: 1736476
Python: 804790
Java: 703649
Ruby: 560430
PHP: 359040
C++: 319324
TypeScript: 311229
Go: 258131
C#: 246513
CSS: 236795
Shell: 168301
C: 160889
Swift: 67664
Scala: 67188
Rust: 52936
Rust 作为 Swift/Scala/Rust 一组排名第十五。这个排名挺不错。列表上的所有其他语言都是在实际应用中使用频率非常高的语言,而不是娱乐性质的语言。
第十五名这个名次也很重要,因为如果 Octoverse 今天生成的话,Rust 将第一次进入排名。
我们继续来看。关注 PR 数量的一个缺陷就是,少量非常成功的项目会给结果造成偏差。这些流行项目的 PR 数非常高,因此它所用的语言会排名很靠前。为了避免这个问题,我们还要看看“活跃项目数”。这里我们定义“活跃项目数”为:
比“hello world”大的项目;
至少有一个星;
最近 30 天内有活动。
排名如下:
JavaScript: 56437
Python: 37554
Java: 27912
C++: 16787
PHP: 16451
Shell: 12245
C#: 11503
C: 10662
Go: 8816
CSS: 8781
TypeScript: 8447
Ruby: 7518
Swift: 3828
Objective-C: 3054
Rust: 2604
Kotlin: 2343
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)。
————— 推荐阅读 —————
打败 Python、JS、C# 成最受欢迎编程语言,是时候掌握 Rust 了吗?相关推荐
- 9月5日云栖精选夜读 | 对比来了!Julia 能打败 Python 和 R 成最终赢家吗?
在这篇文章中,作者通过一个简单的似然函数优化(Maximum Likelihood Optimization)问题来对比 Julia,R 和 Python.这是一个比较小的优化问题,性能上的差异表现可 ...
- 取代 JavaScript!Python 成 Stack Overflow 最受质疑编程语言
对于开发人员来说,哪些编程语言最受欢迎?哪些框架.包.函数和方法被提问的次数最多?哪种数据类型使用起来最痛苦?各个编程语言之间的问题有何不同?--本文中汇总了数百万个各个开发领域内的不同问题,挑选了1 ...
- python代替javascript_取代 JavaScript!Python 成 Stack Overflow 最受质疑编程语言
对于开发人员来说,哪些编程语言最受欢迎?哪些框架.包.函数和方法被提问的次数最多?哪种数据类型使用起来最痛苦?各个编程语言之间的问题有何不同?--本文中汇总了数百万个各个开发领域内的不同问题,挑选了1 ...
- Java程序员怒了:收入最低遭全球diss!Python成最受欢迎语言有“内幕”?
女神式大写悲伤-- 国外知名IT网站StackOverflow最近公布了<2019全球开发者调查>的结果.获得了一些意想不到的结果-- 1 Java一降再降 不再是最火语言 (各语言使用人 ...
- python画飞机代码_这个可能打败Python的编程语言,正在征服科学界
原标题:这个可能打败Python的编程语言,正在征服科学界 Julia 语言是近年来科学世界中出现的一匹黑马.物理学家 Lee Phillips 发表了一篇科普文章,介绍了这种科学计算语言的真正魅力所 ...
- python代码转成php代码的工具 或者go转成php的代码,想把odoo改成成php swoole当成web服务+go的架构
目前市场上有一些可以将Python代码转换为PHP代码的工具,例如: Transcrypt:Transcrypt是一个将Python代码转换为JavaScript和PHP的工具.它可以将Python代 ...
- python打包成二进制文件_pyinstall python文件打包成二进制exe文件
pycharm + python3 + win7 1 pip install pyinstall (官网) 2 准备 .py 文件 3 具体例子 from PyQt5.QtWidgets impor ...
- Python 为何能成最强编程语言?!
挑战高薪,进军人工智能领域: https://edu.csdn.net/topic/ai30?utm_source=csdn_bw "我累了,需要很长时间的休息." 2018 年 ...
- 对c++ Java go python js 的一些总结
文章目录 编译执行和解释执行 面向过程和面向对象 动静态和强弱类型 静态语言和动态语言 强类型和弱类型 对c++ Java go python js 的一些总结 编译执行和解释执行 1.编译执行:将源 ...
最新文章
- 新计算机教师工作随笔反思,信息技术反思随笔 (2)
- wiki-editor语法
- ElementUI中显示是否以及SpringBoot中怎样存储实体类属性和数据库怎样设计字段
- 玩转NumPy——NumPy数组的切片和索引
- 代理模式之Java动态代理
- Python中的bytes,str,int等类型转换
- JavaScript大杂烩17 - 性能优化
- java堆栈信息查看,以及JVM性能查看工具-jconsole+jmap
- 二叉树的几种遍历方法
- 如何使用DevStack在Ubuntu 18.04上安装OpenStack
- 大数据分析工具有哪些特性
- C# 获取项目程序路径的10种方法
- tp5数据排序分页展示
- Process finished with exit code -1073740791 (0xC0000409)
- 直播带货开发,实现主播和用户连麦的方式
- 银行数字化转型导师坚鹏:基于招商银行案例研究的银行APP运营
- c语言字符串函数strcat strcpy strlen strcmp的用法及原型
- android 屏幕旋转
- 利用for语句,编程输出如下图形:* *** *****
- 【自学Python】Python IDLE使用
热门文章
- leetcode python3 简单题7.Reverse integer
- freenas共享指定网络密码不正确_FreeNas系统安装贴心教程(附常见问题解决方案)...
- db2 导入数据_IBM BigInsights大数据迁移
- 读取文件卡顿_CPU占用100%,电脑卡顿原来可以这样解决!多任务操作也运行如飞...
- Web 性能优化:使用 CSS font-display 控制字体加载和替换
- 微信“拍一拍”新增“炸一炸”功能;爱奇艺 CEO:会费涨价是行业必然趋势;微软终止 Windows 10X 开发|极客头条...
- 百度大脑 EasyDL 专业版最新上线自研超大规模视觉预训练模型
- 微信团队回应“部分用户朋友圈无法刷新”;罗永浩:准备做综艺节目;Apache Spark 3.0 发布| 极客头条...
- 微信被指监听用户,腾讯回应;谷歌意外推送 Android 11 Beta 更新;Linux 5.7 发布 | 极客头条...
- 67% 为宽松许可证,2020 年开源许可证最新趋势来袭