0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

大厂对Rust的态度,C++之父回应

倩倩 来源:CSDN 作者:辛晓亮 2022-09-22 11:25 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

9 月 20 日,微软 Azure 现任 CTO、Sysinternals 主要开发者 Mark Russinovich 在其个人推特账号发表动态称是时候停止使用 C/C++启动任何新项目,并建议在需要使用 noc-GC 语言的场景下使用 Rust 编程语言。

Rust 由 Graydon Hoare 设计,而后在 Mozilla 成型,Rust 设计时借鉴了许多 C++ 的设计思想如并发特性等,也以高性能著称,还实现了内存安全。2015 年 Rust 作为 C/C++ 的替代品开始引起人们的关注,正因如此,Rust 也经常被拿来与 C++ 进行比较,开发者也经常因为 Rust 还是 C++ 更好而争论。

Mark Russinovich 此番言论一出,也是在技术圈引起大量讨论。

Mark Russinovich圈内地位

不同于从小就热衷于计算机的其他技术大牛,Mark Russinovich 15 岁才开始对编程很感兴趣,随后在卡内基·梅隆大学获得计算机工程博士学位。加入微软之前,Mark Russinovich 先是做着 Windows NT 性能监控软件的开发工作,随后与 Bryce Cogswell 共同创办了 Winternals Software 公司并一起开发了数十款流行的 Windows 管理和诊断实用程序,这其中就包括著名的系统工具 Sysinternals。

2006 年微软收购了 Winternals Software 公司,Mark Russinovich 也随即加入微软,帮助提升 Windows 的技术水平。在微软,Mark Russinovich 开发了非常多的系统工具,比如 winobj、sysmon、diskmon 和进程监视器,同时他还著有被称为 BSD 红皮书的《Windows Internals》,此外,Mark Russinovich 还精通逆向工程,震惊世界的索尼BMG光盘复制保护丑闻就是他发现的。

也因如此,不少开发者认为像他这样的大佬不应该参与到这种哪个编程语言更好的争论之中。

大厂对 Rust 的态度

尽管作为微软 Azure 的 Mark Russinovich 表示自己发表的只是个人意见,但其实微软对 Rust 的态度已经很明朗。不仅仅是作为 Rust 基金会的创始人,早在 2019 年,微软就开始使用 Rust 重写 Windows 组件。当时微软表示,其产品 70% 的安全漏洞都是内存安全问题,他们需要更安全的系统编程语言,毫无疑问,Rust 是最好的选择,Rust 编译器提供的内存和数据安全给微软的开发者提供了很大的帮助。

微软在官方文档中提到,他们选择 Rust 作为 Windows 最新的程序设计语言,另一个因素就是 Rust 在 Stack Overflow 开发者报告中已经连续 7 年成为最受开发者欢迎的编程语言。

得益于内存安全,Rust 备受青睐,不止微软,Rust 已经在其他科技大厂如苹果、亚马逊、谷歌、Linux 开发中广泛应用。Meta 还将 Rust 列为开发人员首选语言名单。

众所周知,Linux 之父 Linus Torvalds 对 Rust 也有独特的 Rust 的偏爱,Rust 目前已经成为 Linux 的第二编程语言,目前 Linux 的内核正在使用的 C 语言相比,Rust 最大的优点在于内存安全。

在 9 月 19 日结束的内核维护者峰会上,Linus Torvalds 接受媒体采访时说道,“如果不出意外,Rust 将出现在 Linux 6.1 内核之中”。Torvalds 还表示,除了内存安全的因素,他希望在内核中看到 Rust 的另一个原因是鼓励新的开发人员开始研究内核。

Linux 已迭代至 6.0,目前 Rust 进入内核的主要问题是编译器,现在的内核通常使用 GCC 编译,但 Rust 通常使用 LLVM 编译器进行编译。

C++ 之父回应

对于 Mark Russinovich 的言论,外媒 The Register 邀请 C++ 之父 Bjarne Stroustrup 进行了回应。

“人们总是迷恋那些看似能让他们生活更轻松的新事物,这点在企业高管上尤其明显。此外,支持新事物远比解决旧工具的已知问题更令人兴奋。不幸的是,新语言通常需要多年时间和重大努力才能在其广泛的应用领域与成熟语言相匹配。但大多数开发者看不到这一点,而且他们喜欢发表片面的评论。”

Bjarne Stroustru 还表示:”在许多情况下,安全性至关重要,这也是我们多年来一直致力于提高 C++ 安全性的原因。我们现在已经在 ISO C++ 中实现了可靠的完美类型与内存安全。具体来说,我们消除了空指针问题,能够捕捉范围错误,消除了数据争用等。此外需要注意的是,包括 Rust 在内,任何一种号称安全的语言都可能存在不安全代码的漏洞。“

Bjarne Stroustru 最后还补充道:“直接替换 C++ 代码,或者让它们变得更加安全都是一项非常艰巨的任务,需要逐步慢慢的才能做到这一点。否则大量不安全的 C++ 代码将会永远存在。”

开发者的不同声音

不少开发者许多开发者都对 Rust 的过度宣传感到反感,并表示不同的工具适合不同的问题,不要再过度宣传某一种编程语言。Rust 很好,但它不是所有问题的解决方案。

Rust 与 C/C++ 这一次的对比同样少不了网友的调侃,其中就有开发者表示:“在过去的三十年里,每隔五年 C/C++ 会被宣布一次死亡”。

也有开发者认为 C/C++ 只是工具,批评 C/C++ 不如 Rust 安全是不负责任的,程序是否安全应该问责开发者,通过更换编程语言并不能解决程序代码不安全的问题。

确实像这位开发者所言,Rust 本身并不能保证软件是安全的,它提供了针对内存安全漏洞的防御,但并不能消除其他类别的漏洞。正如 Rust 官方文档解释的那样,“Rust 包含安全和不安全的编程语言”,开发人员可以选择为某些任务编写不安全的 Rust,他们可能会在无意中创建不安全的代码。

抛开这些调侃,尽管不少大厂都在扶持 Rust,但在许多开发者眼中,一方面他们更关注 Rust 有没有在更多的产品中得到应用和发展,另一方面 Rust 过于陡峭的学习曲线也给开发者带来了困扰,从学习 Rust 到具备实际生产力需要一定的时间,这也是不少开发者抗拒 Rust 的原因。

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 微软
    +关注

    关注

    4

    文章

    6753

    浏览量

    108085
  • C++
    C++
    +关注

    关注

    22

    文章

    2130

    浏览量

    77378
  • Rust
    +关注

    关注

    1

    文章

    241

    浏览量

    7649

原文标题:呼吁停用 C/C++,微软 Azure CTO 更青睐 Rust

文章出处:【微信号:玩转VS Code,微信公众号:玩转VS Code】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    C++与lua联合编程

    在现代软件工程的庞大架构中,纯粹的 C++ 与动态脚本语言之间的关系,早已演变成一场精密的“商业分工”。C++ 扮演着提供极致性能的“底层重工业”,而 Lua 则充当着实现灵活业务逻辑的“轻量级
    发表于 04-19 16:27

    C++:const 的空间,常量也能占内存?

    ] != BLACK)): return True return False c++语言5g.FsW.dgdfgsg.cnJIWWQc++语言 c++语言5g.I5y.dgdfgsg.cnJIWWQc++
    发表于 04-16 19:19

    Perforce 静态分析现已正式支持 Rust语言!

    您是否正计划通过 Rust 编程来提升内存安全性,却又担心它无法覆盖所有的安全漏洞?Perforce QAC 和 Klocwork 现在已支持分析 Rust 代码,填补了开源代码检查工具在质量和治理工具链方面的空白。
    的头像 发表于 04-08 15:38 448次阅读
    Perforce 静态分析现已正式支持 <b class='flag-5'>Rust</b>语言!

    汽车网络安全开发语言选型指南:C/C++/Rust/Java等主流语言对比+Perforce QAC/Klocwork工具支持

    汽车网络安全如何选编程语言?CC++Rust、Java……谁更适合AUTOSAR、ISO/SAE 21434?一文了解8种主流语言的优劣与适用场景,以及Perforce QAC/Klocwork对MISRA、CERT等规范的
    的头像 发表于 12-26 11:13 660次阅读
    汽车网络安全开发语言选型指南:<b class='flag-5'>C</b>/<b class='flag-5'>C++</b>/<b class='flag-5'>Rust</b>/Java等主流语言对比+Perforce QAC/Klocwork工具支持

    C语言与C++的区别及联系

    C语言和C++到底是什么关系? 首先C++C语言本来就是两种不同的编程语言,但C++确实是对C
    发表于 12-24 07:23

    CC++之间的联系

    1、语法兼容性: C++完全兼容C语言的语法,这意味着任何有效的C语言程序都可以直接在C++编译器下编译通过。 2、底层控制: C++
    发表于 12-11 06:51

    C语言和C++之间的区别是什么

    区别 1、面向对象编程 (OOP): C语言是一种面向过程的语言,它强调的是通过函数将任务分解为一系列步骤进行执行。 C++C语言的基础上扩展了面向对象的特性,支持类(class)、封装、继承
    发表于 12-11 06:23

    C++之父亲临北京,AI原生时代最值得参加的系统软件技术大会日程发布

    秉承"全球专家、卓越智慧"的理念,由 CSDN 与奇点智能研究院举办的「2025 全球 C++ 及系统软件技术大会」将于 12 月 12-13 日在北京金隅喜来登大酒店正式举办。
    的头像 发表于 12-05 15:47 449次阅读

    C++程序异常的处理机制

    1、什么是异常处理? 有经验的朋友应该知道,在正常的CC++编程过程中难免会碰到程序不按照原本设计运行的情况。 最常见的有除法分母为零,数组越界,内存分配失效、打开相应文件失败等等。 一个程序
    发表于 12-02 07:12

    RusT-Thread:基于Rust面向资源受限嵌入式设备的操作系统的实践 | 技术集结

    摘要随着物联网和嵌入式系统的发展,实时操作系统(RTOS)的安全性和性能需求日益提高。传统基于C语言的RTOS在内存安全和并发控制方面存在局限,容易导致缓冲区溢出、数据竞争等问题。本项目以
    的头像 发表于 11-07 17:37 7060次阅读
    <b class='flag-5'>RusT</b>-Thread:基于<b class='flag-5'>Rust</b>面向资源受限嵌入式设备的操作系统的实践 | 技术集结

    C/C++代码静态测试工具Perforce QAC 2025.3的新特性

     Perforce Validate 中 QAC 项目的相对/根路径的支持。C++ 分析也得到了增强,增加了用于检测 C++ 并发问题的新检查,并改进了实体名称和实
    的头像 发表于 10-13 18:11 736次阅读
    <b class='flag-5'>C</b>/<b class='flag-5'>C++</b>代码静态测试工具Perforce QAC 2025.3的新特性

    技能+1!如何在树莓派上使用C++控制GPIO?

    在使用树莓派时,你会发现Python和Scratch是许多任务(包括GPIO编程)中最常用的编程语言。但你知道吗,你也可以使用C++进行GPIO编程,而且这样做还有不少好处。借助WiringPi
    的头像 发表于 08-06 15:33 4503次阅读
    技能+1!如何在树莓派上使用<b class='flag-5'>C++</b>控制GPIO?

    RT-Thread 遇上 Rust:安全内核 RusT-Thread 的诞生

    大家好,我们是中国科学技术大学操作系统原理与设计(H)课oooooS小组。这个项目是我们的课程大作业:参考RT-Thread架构,使用Rust搭建一个原生的嵌入式操作系统内核。初识Rust是因为xk
    的头像 发表于 08-02 11:03 3719次阅读
    RT-Thread 遇上 <b class='flag-5'>Rust</b>:安全内核 <b class='flag-5'>RusT</b>-Thread 的诞生

    请问OpenVINO™ 是否支持 Rust 绑定?

    无法确定OpenVINO™是否支持 Rust 绑定。
    发表于 06-25 07:45

    主流的 MCU 开发语言为什么是 C 而不是 C++

    在单片机的地界儿里,C语言稳坐中军帐,C++想分杯羹?难喽。咱电子工程师天天跟那针尖大的内存空间较劲,C++那些花里胡哨的玩意儿,在这儿真玩不转。先说内存这道坎儿。您当stm32f4的256kRAM
    的头像 发表于 05-21 10:33 1212次阅读
    主流的 MCU 开发语言为什么是 <b class='flag-5'>C</b> 而不是 <b class='flag-5'>C++</b>?