Rust 2020 调查报告出炉,95%的开发者吐槽Rust难学
来源 | CSDN(ID:CSDNnews)
编译 | 苏宓
头图 | CSDN 下载自东方 IC
众多语言中,Rust 作为一款小众的现代系统编程语言,近几年间,接连受到了各大企业的青睐。
正如不久前,AWS 开源团队宣布聘用 Rust 编译器联合创始人 Felix Klock,未来致力于进一步改进 Rust。对于 AWS 本身而言,也是 Rust 的忠实用户,其基于 Rust 研发并支持了多款内部产品,如虚拟化技术产品 Firecracker,以及 Amazon Simple Storage Service(Amazon S3)、Amazon Elastic Compute Cloud(Amazon EC2)、Amazon CloudFront和Amazon Route 53 等服务。
此外,另一大科技巨头微软宣布未来将使用 Rust 作为 C/C++ 等编程语言的替代方案,尤其在构建基础设施软件过程中,对此,微软认为 C/C++ 无法胜任编写关键任务的软件,业界非常需要高性能、内存安全的编程语言来开发底层系统,而当今市场上最好的选择就是 Rust。
同时,今年 3 月,苹果也表示对将 C 代码移植到 Rust 感兴趣,希望投身到使用 Rust 编写代码的潮流中。此前通过苹果的一则招聘公告可以看出,其想要在基于 Linux 的服务器端平台上将 C 过渡到 Rust。
对此,我们不禁好奇,近 600 种编程语言中,为何 Rust 能够脱颖而出?它究竟有着怎样的魔力?日前,Rust 官方在调研了全球 8323 位开发者后,最新发布了 2020 年 Rust 调查报告,我们不妨回顾过往这一年 Rust 的发展来一探究竟。
开发者对 Rust 的信任度较高
通过报告,我们发现 Rust 开发者的用户黏度较高,有 83% 的受访者表示他们一直在使用该语言,仅有 7% 的开发者称曾经使用过 Rust,现在因为一些因素不再使用它。
至于放弃 Rust 的原因主要是,一方面,有 35% 的受访者称在一定的时间内还没有学会 Rust 语言;另一方面,34% 的受访者表示公司的业务用不到 Rust,所以也没有太多理由继续使用 Rust;除此之外,还有 19% 的开发者表示,和当前正在使用的其他编程语言相比,Rust 会让其程序变慢。
Rust 稳定性增强
众所周知,当提及 Rust 语言时,安全、性能、并发等特性是其优势。因此,Rust 的稳定性也经过了多轮的验证,不过具有较高稳定性的 Rust 并不意味着在任何场景下都能保证代码运行不会出现问题,尤其是在新版本的编译器下。对此,过去一年中,Rust 的迭代主要聚焦于清理代码库和提升稳定性。不过这项工作还尚未全部完成,但不少受访者表示,相比过往,Rust 的性能的确有很大的提升。这也是稳定版占主流版本的原因。
其次,开发者最喜欢 Rust 的 Nightly 版本。不过相较去年,这一版本的使用人数从 30.5% 下降到了 28%,只有 8.7% 的受访者表示他们一直在使用。当问及为什么使用时,开发者表示最主要的原因是因为该版本使用了 Rocket Web 框架,此前,官方也仅宣布该框架将在 Rust 下一稳定版本中使用。其次,使用 Nightly 版本的原因还包含了 const 泛型功能,不过,随着 const 泛型功能即将实现稳定版,预估计开发者会减少对此功能的依赖。
值得注意的是,Rust 官方指出,使用 Nightly 版本的用户大多处于习惯,因为“Nightly 版本足够稳定”。
谁在使用 Rust?
除了文章伊始所提及的大厂企业之外,对于开发者而言,他们主要将 Rust 应用于哪些场景?根据调查报告显示,Rust 作为一种用于生产的语言而广受欢迎,其中,有 40% 的软件开发者表示,他们在日常工作中经常使用 Rust。同时,也有近一半的受访者表示,自己所在的企业正在计划在新的一年中招聘 Rust 相关的开发者,这也意味着,Rust 人才的需求量将进一步扩大。
随着 Rust 的发展,它被用于越来越大的项目之中,有 44% 的受访者表示,他们产出的 Rust 代码在 1 万行及以上,而在去年这一比例仅有 34%。
开发者:Rust 太难学了!
虽然和一些老牌语言 C/C++ 相比,Rust 正在迅速捕获开发者的关注,但是据官方调查报告显示,Rust 仍有许多亟需完善之处。譬如以下几点:
与 C++ 的互操作需要进一步提升
有些出乎意料的是,Rust 与 C ++ 的互操作是开发者最为期待的,其次分别是 C、Python。实际上,对于使用大型代码库(100,000 行代码或更多)的开发者而言,实现与 C ++ 的互操作是改善 Rust 编程体验以及缩短编译时间最为直观的方法。
Rust 太难上手,尤其是生命周期
当被问及如何提高 Rust 的采用率时,不少开发者提到降低 Rust 的门槛,让 Rust 更容易被学习。其中,15.8% 的受访者直言,如果“不那么令人恐惧,或更容易学习以及不太复杂”,他们会想要更多地使用 Rust。至于怎么降低 Rust 入门门槛,开发者的建议是增加官方文档和培训。
当我们要求受访者对Rust的专业知识进行评分时,在10人中有7人是一个明显的高峰。很难说这是跨语言比较的,但是似乎很少有人愿意声称拥有全部专业知识。但是,与去年相比,Rust社区似乎确实在获得该语言的专业知识。
当问及具体是哪部分很难时,61.4% 开发者大呼 Rust 的生命周期难度最高。因为 Rust 的生命周期是一个非常难以理解的概念,同时这也是 Rust 独有的概念。
不过,根据调查报告,拥有系统编程知识(至少具备一定的 C/C++ 经验)的开发者在使用 Rust 会更得心应手一些。对此,Rust 官方在进行调研时,也让受访者进行了自评,结果显示,如果具有系统编程经验的开发者在自己的 Rust 专业知识中自评为 5.5 分(满分10);诸如学过 Java 或 C# 等语言的开发者自评为 4.9 分;如果仅具有动态类型语言(如 Ruby、JavaScript)经验的开发者,自评为 4.8 分。这其中存在一定的差异。
编译时间需要缩短
Rust 社区及其开发团队一直在致力于缩短 Rust 的编译时间,好在效果有些明显。有 50.5% 的受访者表示,感受到了编译时间已经缩短。对于拥有大型代码库(10,000 行代码及以上)的受访者而言,这种改进尤为明显,其中 62.6% 的受访者表示改进,不过,还有 2.9% 的受访者表示情况变得更糟。对此,Rust 官方在报告里面表示,缩短编译时间也将是 2021 年 Rust 功能继续完善的方向。
库的支持
根据调查发现,开发者对 Rust 生态系统中库支持的增长感到满意,其中 65.9% 的受访者表示,他们至少看到了一些改进,只有 4.9% 的受访者说他们没有看到任何改进。
当被问及最缺少哪种类型的库支持时,GUI 编程是一个压倒性的答案。
Rust 的未来
最后,对于业界而言,微软、苹果等公司都在深度拥抱 Rust,同时,Rust 在开发者圈中也越来越受欢迎。Rust 官方也带来了一些令人兴奋的特性,如 const 泛型、2021 版泛型关联类型(GATs),改进了异步功能、Bevy 游戏引擎等。不过,Rust 的学习门槛让不少开发者望而却步,在此,欢迎大家关注 CSDN 的「 Rust语言中文社区」:https://blog.csdn.net/u012067469 ,与我们共同成长。
更多内容详见:https://blog.rust-lang.org/2020/12/16/rust-survey-2020.html
更多精彩推荐
对人脑而言,阅读计算机代码和阅读语言有何不同?
微软收购 GitHub 两年后,大咖共论开源新生态
短视频特效“耍花招”:线上投篮、摆摊,让画中人摇摆,浅谈腾讯微视的AR基建
我国首次举办工业互联网“人机对抗”竞赛 检验独创理论独有技术有效性
跨平台将终结
相关文章:

Android中Parcel的分析和使用
http://www.360doc.com/content/13/0419/12/9171956_279433672.shtml

Kubernates集群入门(1)
一、K8s安装准备 1.至少两台主机,一台作为master,一台作为node。两台主机需要关闭防火墙。 #centos6 service stop firewalld && service disable firewalld #centos7 systemctl stop iptables && systemctl disable iptables; 2.两台…

Asp.net 不使用SQLDMO实现数据库备份和还原
今天需要做一个历史数据库,备份还原的程序,就是在sql服务器兴建一个数据库的历史版本的复.手工操作很方便,但是程序来实现我还没做过.上网找资料发现都调用了 SQLDMO 的 SQL COM 来实现. 应为我不想在应用服务器上面引用 COM 组件服务.所以没采取这种方式.打开Sql 联机帮助.发现…

B2B行业网站10种经营模式研究及组合方案
许多人对B2B网站的理解仅停留在企业对企业的在线交易上,认为按照B2B电子商务的概念就应该是在网上进行交易。但目前中国比较成功的B2B网站却并非所有都是在线交易模式,尤其是B2B行业网站,许多都没有做在线交易,更多是以基于交易为…

用户数年增长 300%,BitMax如何把握数字资产时代机遇?
12月22日,在2020 BitMax两周年庆典上,BitMax 创始人兼 CEO 曹晶、BitUniverse 合伙人许志宏、BlockVC 创始人徐英凯、红林集团&红链资本创始人李勇敏等多位区块链行业专家,分享了行业洞察,一同探讨交易所的现状和突围之战、数…

2014 年美国程序员薪资调查
Drdobbs 近期向 2,200 名美国的程序开发人员做了一次调查,调查显示高薪领域的工资随着经济的增长而增长。 “Software Engineer”这个职位,除了在德州和几个其他州之外,没有什么特别的意思,在这几个州用这个职称需要经过评定。在其…

ASP.net 验证码(C#)
ASP.net 验证码(C#) /* Copyright all(c) 2005 ZhongFeng, http://blog.csdn.net/SW515 */ public class ValidateCode : System.Web.UI.Page { private void Page_Load(object sender, System.EventArgs e) { this.CreateCheckCodeImage(GenerateCheckCode()); } #region…

SCCM 2012 SP1系列(十)配置补丁更新-3
自动部署规则SCCM2012中对补丁分发增加了一项新功能—自动部署规则,这功能相当于WSUS的自动审批功能。就是当检测到新的补丁更新后自动进行下载更新动作,然后下发给客户端。其实在大企业中还是建议会对每个更新包进行测试,确定对现有业务没有…
CSDN湘苗培优|保持热情,告别平庸
湘苗培优招生进行中在培优中,遇见更好的自己——CSDN高校俱乐部CSDN湘苗培优随着我国信息产业飞速发展,通过常规灌输式培养出来的学员已经不能够满足企业要求。企业更缺乏的是具备自主学习能力、具备综合解决问题能力的高素质技术人才。高素质技术人才需…

在c#中调用windows脚本的方法
在c#中调用windows脚本的方法 方法1:直接调用CODE: System.Diagnostics.Process proc new System.Diagnostics.Process();proc.StartInfo.FileName"wscript";proc.StartInfo.Arguments" hello.js"; proc.StartInfo.UseShellExecute false;pr…

ie和firefox操作table对象的异同
2019独角兽企业重金招聘Python工程师标准>>> ie和firefox下操作table对象的异同【测试浏览器版本:ie为8,9,firefox为2.0】 1)在ie下,table标签直接使用appendChild增加document.createElement(tr)的行时不显示…
机器学习和计算机视觉的前20个图像数据集
作者 | Meiryum Ali 翻译 | 火火酱,责编 | 晋兆雨出品 | AI科技大本营头图 | 付费下载于视觉中国计算机视觉使计算机能够理解图像和视频的内容。计算机视觉的目标是使人类视觉系统可以实现任务自动化。计算机视觉任务包括图像采集、图像处理和图像分析。图像数据可以采用不同的…

移动应用开发者应该关注的 Google I/O 两项更新
移动应用开发者看过来,今年 Google I/O 这两项更新能帮上大忙移动应用开发者看过来,今年 Google I/O 这两项更新能帮上大忙。 I/O 的 Keynote 刚刚结束,用户可能为 Google 新的消费产品感到兴奋。但这毕竟是开发者大会,一些面向开…
赠书 | 手把手教你自己动手打造一个智能恒温器
作者 | Yazeed Sabri翻译 | 火火酱,责编 | 晋兆雨出品 | AI科技大本营头图 | 付费下载于视觉中国*文末有赠书福利为了能住得离公司近一点,我就搬进了一套没有温控系统的公寓。因为在芝加哥市区,这个价位的公寓大多都是没有温控系统的,所以我心…

JVM 出了问题 EXCEPTION_ACCESS_VIOLATION
2019独角兽企业重金招聘Python工程师标准>>> # # An unexpected error has been detected by Java Runtime Environment: # # EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc0x10002c08, pid5972, tid1404 # # Java VM: Java HotSpot(TM) Client VM (11.3-b02 mixe…

转换字符串中汉字为其拼音缩写(C#)
//将指定字符串中的汉字转换为拼音缩写,其中非汉字保留为原字符。 public string GetPinYin( string text){char pinyin;byte[] array;System.Text.StringBuilder sb new System.Text.StringBuilder(text.Length); foreach(char c in text) { pinyin c; …
weblogic线程阻塞性能调优(图解)
转自:http://blog.csdn.net/z69183787/article/details/12647539 声明:出现这个问题有程序方面、网络方面、weblogic设置方面等等原因,此文章主要讲述由于weblogic设置而导致的解决办法。 因为: 1.程序问题,需要项目自…

ASP.net实现无扩展名的URL重写。简单、方便、无需ISAPI
URL重写已经有很多的方法,但是多数都有一个缺点,就是不支持无扩展名的网页。微软提供的方法需要在根目录里面建立jyk的文件夹,然后再建立一个default.aspx的文件,如果您有100名会员的话,这是一个不可想象的事情。 另一…

IDC公布中国深度学习市场综合份额:百度超越Facebook位列第二
近日,权威数据调研机构IDC公布了2020年下半年深度学习框架平台市场份额报告。数据显示,在中国深度学习平台市场综合份额中,Google、百度、Facebook稳居前三,占据70%以上市场份额。其中,百度占比提升3.38%增速第一&…

OpenStack 和 Cloud Foundry
上周我参加了在亚特兰大举行的OpenStack峰会,这是一个非常好的机会去进一步了解Cloud Foundry 和OpenStack ecosystem之间的关系。 在OpenStack阵营里,在讨论PaaS时,“Could Foundry 是不是 OpenStack” ,这个看起来像是一个有争议…

防止IIS文件被下载方法
如何才能防止encry目录下的所有文件被非法下载呢?我们可以应用IIS中的应用程序映射结合ASP.NET中的IHttpHandler自定义权限,把IIS应用程序映射用于所有文件,并将控制权交给我们自己实现的IHttpHandler。 首先添加应用程序映射:打…

转 如何在IOS设备中去掉屏幕上的status bar
引入如何在IOS设备中去掉屏幕上的status bar,即:不显示设备上方的[网络、时间、电池??]条?操作方法一:在-info.list项目文件中,加上“Status bar is initially hidden”选项,并勾选…
倒计时7天!博客之星虚位以待,Macbook等你来拿
也许你陪伴了CSDN一年的时间刚刚写下自己的第二十篇的原创技术博文也许你是陪伴了CSDN近20年风雨的老码农更新了近千百篇的技术文章也许你还在坚持着“技术输出”也许你已经开始封笔也许你刚刚突破粉丝数达到了三位,四位数也许你刚刚申请的博客专家,终于…

UVA 10515 - Powers Et Al.(数论)
UVA 10515 - Powers Et Al. 题目链接 题意:求出m^n最后一位数 思路:因为m和n都非常大,直接算肯定是不行的,非常easy想到取最后一位来算,然后又非常easy想到最后一位不断乘自身肯定会形成周期。而且这个周期还挺短的&am…
视觉+Transformer最新论文出炉,华为联合北大、悉尼大学发表
作者 | CV君来源 | 我爱计算机视觉Transformer 技术最开始起源于自然语言处理领域,但今年5月份Facebook 的一篇文章将其应用于计算机视觉中的目标检测(DETR算法,目前已有78次引用)使其大放异彩,并迅速得到CV研究社区的关注。已有研究表明&…

易宝典文章——怎样管理Exchange Server 2013邮箱地址
对于一个用户邮箱,即邮箱收件人来讲,在创建时Exchange会为其按照Alias分配一个邮件地址,即主邮件地址,也称为“主SMTP地址”或“默认答复地址”。但是在用户日常使用中可能会出现需要多个邮件地址的情况,比如ÿ…

使用FileUpload控件上传图片并自动生成缩略图、自动生成带文字和图片的水印图
本文借助vs2005中自带的FileUpload控件实现图片文件的上传并生成缩略图。实现过程:选择图片上传成功后,取得已经存在服务器的文件生成缩略图,并且判断是否是图片类型的文件,这个的判断可以在程序中修改,本程序只是判断…

Java -- JDBC 学习--通过Statement进行数据库更新操作
通过 JDBC 向指定的数据表中插入一条记录. 1. Statement: 用于执行 SQL 语句的对象 1). 通过 Connection 的 createStatement() 方法来获取 2). 通过 executeUpdate(sql) 可以执行 SQL 语句. 3). 传入的 SQL 可以是 INSRET, UPDATE 或 DELETE. 但不能是 SELECT 2.…

身份证号码验证-支持新的带x身份证
//--身份证号码验证-支持新的带x身份证functionisIdCardNo(num) { varfactorArr newArray(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1); varerror; varvarArray newArray(); varintValue; varlngProduct 0; varintCheckDigit; varintStrLen num.length; v…
装上后这 14 个插件后,PyCharm 真的是无敌的存在
来源 | Python编程时光作者 | 写代码的明哥Key Promoter X如果让我给新手推荐一个 PyCharm 必装插件,那一定是 Key Promoter X 。它就相当于一个快捷键管理大师,它时刻地在:教导你,当下你的这个操作,应该使用哪个快捷…