微软为什么从C/C++转向了Rust?

时间:2022-10-09 17:48:18 | 浏览:1729

作者 | JOAB JACKSON译者 | 弯月,责编 | 屠敏头图 | CSDN 下载自东方 IC出品 | CSDN(ID:CSDNnews)以下为译文:在上个月的AllThingsOpen虚拟会议上,微软云开发推广部的Ryan Levi

作者 | JOAB JACKSON

译者 | 弯月,责编 | 屠敏

头图 | CSDN 下载自东方 IC

出品 | CSDN(ID:CSDNnews)

以下为译文:

在上个月的AllThingsOpen虚拟会议上,微软云开发推广部的Ryan Levick解释了为什么微软在构建基础设施软件中逐渐从C/C++转向了Rust。他表示:“无论软件公司在工具和人员的培训上投入多少精力也不能解决问题,因为C++本质上就不是安全的语言。”并鼓励其他软件行业巨头也应该思考这个问题。

他说:“我们使用的语言由于年代久远、来自不同时代,无法为我们提供保护,让我们免受此类漏洞攻击。C++不是一种内存安全的语言,相信这一点无人有异议。

实际上,微软认为C++无法胜任编写关键任务的软件。业界非常需要高性能、内存安全的编程语言来开发底层系统。Levick表示,当今市场上最好的选择是Rust。

C/C++的问题无法解决

目前,C和C++是编写核心系统软件的默认语言。这种语言速度快,而且源代码可以直接汇编成机器语言。

但是,这些语言引发的与内存相关的bug(其中很多是安全隐患)让整个行业苦不堪言。Levick表示,如今源自微软的CVE中有70%是内存安全问题。他说:“前途未卜,情况没有任何改变。尽管我们为解决这个问题付出了巨大的努力,但这个问题依然普遍存在。”

从财务的角度来看,换成Rust很有道理,因为修补这类与内存相关的没完没了的bug需要付出昂贵的成本。Levick说,早在2004年,每个与内存相关的bug都会给业界造成大约25万美元的损失,而且微软的估计可能还比较保守。

当然,为了提高C++的安全性,软件业界已经付出了大量努力,尽管种种努力都有效,但并不能完全解决这个问题。

长期以来,我们最常使用的一种方法是,就如何编写更安全的代码对程序员展开更多培训。但是,“没有证据表明,对C和C++开发人员进行整体培训可以显著改善这个问题。”Levick根据微软大量的开发人员内部培训结果说。

静态分析是另一种解决方案。但是静态分析会带来太多开销,必须将静态分析紧密结合到构建系统中。Levick说:“因此,人们有很多借口不使用静态分析。如果静态分析不是默认就启用的,那么就起不到任何作用。”

运行时检查也是如此:“了解何时使用运行时检查、何时没有使用是非常困难的,有时甚至不可能。”他还补充说,这也带来了运维开销。

业界最佳机会

为了解决与内存有关的bug,微软安全响应中心发起了“安全系统编程语言”计划。他们投入了一些开发人员专门支持C/C ++。同时,他们还创建了一门新编程语言Verona,来开发安全的底层系统。但是,这个项目策略中第三个主要的部分,也是他们最有信心的部分,就是支持“直接解决这个问题的业界最佳机会”。

他说:“我们相信这个重任落到了Rust肩上。”

就性能而言,Rust与C/C++旗鼓相当,甚至更快。Rust通过软件包管理、现代测试框架等提高了开发人员的生产力。因为这个原因程序员非常喜欢Rust。

但是,微软如此着迷于Rust的主要原因是它是一种内存安全的语言,而且只需要最少量的运行时检查。Rust擅长创建正确的程序。简单来说,正确性就是编译器会检查程序是否存在不安全的操作,从而减少运行时错误。不安全的关键字也可以使用,但并不是默认推荐。在安全的Rust代码中,不安全的代码永远只是一小部分。不安全模式对于需要内存分配的任务(例如编写设备驱动程序)是必须的。但在Rust中,即便内存的不安全部分也封装在API的后面。

Levick表示,这种安全编程的能力不容忽视。实际上,它带来的提升远远不止十倍,因此值得进行投资。这主要是因为几乎所有的C/C++代码都需要进行安全性审核以检查不安全行为,而用Rust编写的代码中,需要检查的不安全代码只是大多数代码库的一小部分。

虽然微软看好Rust,但Levick承认近期内微软核心开发人员不会停止使用C/C++。

他说:“微软有很多C++代码,而且这些代码无处不在。实际上,微软将继续使用C++来编写程序,而且还要使用很长一段时间。”

许多工具都是围绕C/C++构建的。特别是,目前微软的二进制文件几乎完全建立在Visual C ++编译器上,它会生成MSVC二进制文件,而Rust则依赖LLVM。

不过,也许最大的挑战是文化。Levick表示:“有些人想用他们熟知的语言来完成工作。”

尽管如此,整个软件行业似乎都在向着Rust迈进。AWS使用Rust来部署Lambda无服务器运行时,以及EC2的某些部分。Facebook已开始使用Rust,此外还有苹果、Google、Dropbox和Cloudflare也在使用。

原文:
https://thenewstack.io/microsoft-rust-is-the-industrys-best-chance-at-safe-systems-programming/

本文为 CSDN 翻译,转载请注明来源出处。

相关资讯

Chrome Canary正测试类似微软Edge的侧边栏搜索

IT之家 9 月 18 日消息,微软去年在 Edge 浏览器中引入了侧边栏搜索,为用户提供网络结果,如定义、图像、有用链接以及与该查询相关的任何内容。谷歌现在正为 Chrome 开发与侧边栏搜索相同的功能,Chrome Canary 用户可

谷歌称微软Bing上最受欢迎的搜索词是“Google”

谷歌搜索引擎在国外市场上占据主导地位,谷歌从中获得了不少的流量和收入,同时,这也找来了欧盟的反垄断调查。最近,谷歌为了摆脱垄断嫌疑可谓无所不用其极,谷歌公司的律师周二告诉欧盟法院,“Google”是微软公司的必应(Bing)搜索引擎上搜索最

Python太低级,我选C++?码农带你揭穿少儿编程的骗局

本内容来源于@什么值得买APP,观点仅代表作者本人 |作者:玩牛牛创作立场声明:由玩牛牛原创,欢迎转载最近在某乎看到一篇文章,大意是海淀妈妈们已经嫌弃 Python 低级,准备让娃直接入门 C++。看得我这个写了 15 年代码的老码农心惊胆

C/C++编程笔记:一张思维导图,带你总结C语言全部知识点

很多小伙伴想要好好地学习一下C语言的知识,但是又不知道怎么学,应该学哪一些C语言的知识,笔者在网上看到了这一张C语言的比较完善的C语言的学习路线图,有兴趣的小伙伴可以保存起来哈!C语言是面向过程的,而C++是面向对象的。编程入门就选C语言,

为什么永远不会有语言取代C/C++?

数以百计的 C/C++ 替代品将会出现,但 C/C++ 将永远与我们同在!每个 CPU 都带有一种称为 ISA(指令集架构)汇编的电路语言。ISA 程序集是一种硬件语言,由基本数据操作、数学计算和结构化编程(即 jmp)的操作组成。但是,为

C语言和C++的区别和联系

C语言和C++到底是什么关系?首先C++和C语言本来就是两种不同的编程语言,但C++确实是对C语言的扩充和延伸,并且对C语言提供后向兼容的能力。对于有些人说的C++完全就包含了C语言的说法也并没有错。C++一开始被本贾尼·斯特劳斯特卢普(B

「如何系统地学习C/C++语言」有哪些C++书籍可以帮助到你?

如何系统的学习C++语言,今天我们就来看看,如果你从零基础学习C++,那么有哪些书籍可以帮助到你!C++编程书籍《C++ Primer Plus(中文版)》想必绝大多数从事C++开发的同学都看过,至少听过这本经久不衰的经典书籍。这是一本全面

C/C++编程笔记:C语言编程知识要点总结!大一C语言知识点(全)

一、C语言程序的构成与C++、Java相比,C语言其实很简单,但却非常重要。因为它是C++、Java的基础。不把C语言基础打扎实,很难成为程序员高手。1、C语言的结构先通过一个简单的例子,把C语言的基础打牢。C语言的结构要掌握以下几点:(1

「如何系统地学习C/C++语言」有哪些C++开源项目可以学习呢?

我个人认为,开源项目是学习一门编程语言非常快捷且行之有效的方法。得益于强大的Github,提供了很多开源优质的项目,在这些项目中,我们可以学习那些优秀程序员的编码方式、学习并借鉴它们的程序设计模式。还能够从这些项目中得到一些灵感,去动手做一

「如何系统地学习C++语言」从开发环境到C++进阶,应该怎么办?

开发环境如前面介绍的那样,C++属于一种静态的编译型语言,所以,开发环境配置过程中就需要用到对应的编译器。C++有很多编译器可以用,GCC或GNU Compiler Collection是最流行的C++编译器之一。下面是不同操作系统下的编译

友情链接

天天财经元宇宙中国SEO域名抢注宝宝起名网网站监控上海高端交友网小霸王学习机马姓起名字大全梁姓起名网柳州交友相亲网无人机航拍网南宁AI智能引流系统虚拟数字人官网十二星座排名网养生知识网网站开发快速建站西点蛋糕烘焙网舞蹈培训官网东莞头条新闻网吉隆坡旅游网莆田头条新闻网宠物商机网广西旅游网保山今日新闻网丹麦旅游网浙江旅游网苏州旅游网西湖龙井茶官网成都美食网今日牡丹江怀化今日新闻网茂名新闻爆料网创维数字A股防城港新闻资讯网贵州旅游网
c语言中文官网-零基础c++从入门到精通pdf、c语言编译器、C/C++开发工具、c语言入门自学零基础、c++入门自学、c/c++软件下载、c语言编程软件、c语言自学免费网站、c语言零基础自学视频教程、c++手机编程软件、c语言入门程序设计、初级编程视频教程、c语言在线编程平台、C语言线上作业网站。
c语言中文官网 chuxinxin.cn©2022-2028版权所有