微软cto建议业界弃用c/c++采用rust,遭c++之父回怼

程序员编程指南 程序员编程指南     2022-11-29     315

关键词:

出品 | OSC开源社区(ID:oschina2013)

近日,Microsoft Azure CTO、Sysinternals 的主要开发者 Mark Russinovich 在其社交账号上发布动态称,开发人员是时候停止使用 C/C++ 来启动新项目,并建议可在需要使用 non-GC 语言的场景中使用 Rust。

“说到语言,现在是时候停止用 C/C++ 启动任何新项目了,并在那些需要使用 non-GC 语言的场景中使用 Rust。为了安全性和可靠性,业界应该宣布弃用这些语言。”

C++ 之父回应

针对 Mark Russinovich 的言论,外媒 The Register采访了 C++ 之父 Bjarne Stroustrup;Stroustrup 则为 C++ 进行了辩护:

“人们 -- 尤其是一些高管 -- 总是会迷恋那些承诺会使他们的生活更轻松的新事物,这是很正常的。而且,支持新事物远比解决旧的和众所周知的工具的已知问题更令人兴奋。不幸的是,新的语言通常需要多年的时间和重大的努力,才能在其广泛的应用领域中与成熟的语言相媲美。发烧友们很少看到这一点,他们的评论往往是相当片面的”。

Stroustrup 表示,考虑到安全性的重要程度,多年来他一直在致力于提高 C++ 的安全性;从而现在在 ISO C++ 中实现了可靠的完美类型和内存安全。也就是说,每个对象都根据它定义的类型来使用;这意味着消除了 dangling pointers 的使用、捕获范围错误并消除了数据争用。

他还强调称,包括 Rust 在内的每一种 “安全” 语言都存在着允许不安全代码的漏洞。并谈到了他参与编写的 C++ Core Guidelines,这份指南的基本思想是定义一套为保证安全而必须遵守的规则,然后通过静态分析来强制执行。而之所以需要这些规则,就是因为任意的 C 或 C++ 代码本身都无法自证安全。

“这就是符合 ISO 标准的 C++ 代码,那些感觉不需要安全保障或者还不能更新代码的人可以直接不运行分析器。目前,微软 Visual Studio、Clang Tidy 等一些其他地方都有这种分析器的部分实现。”

Stroustrup 指出,很显然的是 C++ 正在积极改进中,譬如在实际应用中的灵活性和性能提升的各种尝试。目前已有数十亿行的 C++ 代码被部署,因此无论是想要对 C++ 代码进行替换还是加强安全性,都是一项需要循序渐进的艰巨任务。“否则大量不安全的 C 和旧式 C++ 代码将 ' 永远 ' 存在”。

引发开发者热议

当然,Mark Russinovich 的言论一出,不可避免的引起了广泛地讨论。有人问这是他个人的观点,还是作为 CTO 的一个声明。对于这个问题,外媒 The Register 也向微软进行了询问,即 Russinovich 的建议是否会在微软全公司范围内进行采纳,但并未得到回复。

.NET Foundation 成员 Shawn Wildermuth 则在评论区提出疑问,Rust 是否有足够的开发人员来推动工作的进行?对此则有开发者回复称,“想要舍下 C/C++ 确实非常困难,但这并不重要;年轻的开发者可以很快掌握 Rust,相较试图寻找有才华的 C/C++ 开发者,此举要容易得多”。

还有评论表示:

George Ou:我是 Rust 的忠实粉丝,但对于那些认为有安全版本的 C 和 C++ 的人,你怎么说?

Ted Mielczarek:要么他们在骗你,要么他们建议的东西需要有效地重写你的整个代码库,所以你最好使用 Rust。

而在反对的声音当中,一个 ID 为 ionCube24 的用户称,Mark Russinovich 的意思更像是在责怪语言而不是程序员。但事实是 “C++ 很好,只是很多使用它(和其他语言)的人基本上不知道如何编程;切换语言并不会解决这一问题。”

有人以自身实践举例表明,Rust 存在局限性,并不能解决他所有的问题。然而该网友的论点似乎有点站不住脚:

“它不必解决所有问题才能产生重大影响。”

“为什么要以 ‘解决所有的问题’ 为标准,它是否需要 ' 解决你所有的问题 ' 才能在编程中产生实质性的差异?在我看来,想要 ' 在所有新项目中使用它 ' 这个标准远比让 ' 它能解决所有已知问题 ' 要低得多。”

还有人则颇为 “痛心” 的感叹 Mark Russinovich 变了,不再 “cool” 了。也有相对理智的发声称,“或者更好的方式是:不要再过度的去宣传推广一种编程语言。不同的工具适合不同的问题。Rust 很好,但它不是所有编程问题的解决方案”。

更有甚者提出了自己认为更好的 C/C++ 替代方案,“当 GCed 系统语言可以接受时,也不会再有新的 C/C++ 项目。Go、Nim 和 Crystal 都是比 C/C++ 更好的选择。还有 Zig,它正在做一些很酷的事情,但尚未像 Rust 那样成熟或流行。”

目前,Hacker News 和 Reddit 上也有相关的话题讨论。

不过话说回来, Rust 最近确实有着较高的热度:

相关链接:https://twitter.com/markrussinovich/status/1571995117233504257

https://news.ycombinator.com/item?id=32905885

https://www.reddit.com/r/rust/comments/xitq5o/mark_russinovich_azure_cto_its_time_to_halt/

为什么我相信使用c语言可以保证内存安全?(代码片段)

...#xff0c;越来越多的公司开始关注其安全性能,如Google、微软、亚马逊等科技巨头纷纷开始推荐Rust这类为安全而生的语言,欲取代过往的C/C++,甚至美国国家安全局也于不久之前发布建议:弃用C/C++,... 查看详情

在windows上安装rust环境(代码片段)

...赖C环境,所以需要先安装C/C++编译环境,有两种选择:安装微软的msvc或者安装mingw/cygwin。如果是新手,不想那么麻烦,可以考虑按TheRustProgrammingLanguage里面说的,安装C++buildtools,如下图所示。拉到最下面: 所有下载->  ... 查看详情

如何在 Rust 中进行实时编程?

...了两个可能的问题:1)如何避免调用Rust的GC?我已经看到建议我可以通过简单地避免托管指针和非实时安全库(例如Rust的标准库)来做到这一点——这足以保证我的实时任务永远不会调用GC吗?2)如何将我的实 查看详情

将元组的 Rust 向量转换为 C 兼容结构

】将元组的Rust向量转换为C兼容结构【英文标题】:ConvertRustvectoroftuplestoaCcompatiblestructure【发布时间】:2015-09-0804:25:17【问题描述】:按照theseanswers,我目前定义了一个Rust1.0函数如下,以便可以使用ctypes从Python调用:usestd::vec;ext... 查看详情

cc++将退休,rust欲上位?

整理|苏宓出品|CSDN(ID:CSDNnews)Rust这把火在微软 AzureCTO Mark Russinovich的助力下,似乎越烧越旺。而每当波及编程语言时,纷争再起,这不,近日外媒TheRegister在发出“是时候在新程序中用Rust来让C、C&... 查看详情

cc++将退休,rust欲上位?

整理|苏宓出品|CSDN(ID:CSDNnews)Rust这把火在微软 AzureCTO Mark Russinovich的助力下,似乎越烧越旺。而每当波及编程语言时,纷争再起,这不,近日外媒TheRegister在发出“是时候在新程序中用Rust来让C、C&... 查看详情

cc++将退休,rust欲上位?

整理|苏宓出品|CSDN(ID:CSDNnews)Rust这把火在微软 AzureCTO Mark Russinovich的助力下,似乎越烧越旺。而每当波及编程语言时,纷争再起,这不,近日外媒TheRegister在发出“是时候在新程序中用Rust来让C、C&... 查看详情

如何在 Visual Studio 2019 中全局禁用 C/C++ 编译器的弃用警告?

】如何在VisualStudio2019中全局禁用C/C++编译器的弃用警告?【英文标题】:HowtodisabledeprecationwarningsforC/C++compilergloballyinVisualStudio2019?【发布时间】:2019-05-1521:15:19【问题描述】:我希望在VisualStudio2019的所有C/C++项目中默认禁用弃用... 查看详情

在windows上安装rust环境(代码片段)

...赖C环境,所以需要先安装C/C++编译环境,有两种选择:安装微软的msvc或者安装mingw/cygwin。如果是新手,不想那么麻烦,可以考虑按TheRustProgrammingLanguage里面说的,安装C++buildtools,如下图所示。拉到最下面: 所有下载->  ... 查看详情

rust:一个不再有c/c++的,实现安全实时软件的未来

...article/dgKDBiPl7KID0dyaE7Wl?utm_source=related_read&utm_medium=articleRust 作为新兴编程语言深受Haskell和OCaml等函数式编程语言的影响,使得它在语法上与C++类似,但在语义上则完全不同。Rust是静态类型语言,同时具有完整类型推断,而... 查看详情

#yyds干货盘点#为什么要学习rust?

1.Rust相关概念与简介Rust是一种令人兴奋的新兴编程语言,它可以让每个人编写可靠且高效的软件。Rust可以用来替换C/C++,Rust和他们具有相同的性能,但是很多常见的bug在编译时就可以被消灭。Rust是一种通用的编程语言,但是它... 查看详情

一篇理清c语言/c++/c#,及java/python的区别在什么地方?建议收藏(代码片段)

...时库)是用C语言开发的,可是并不依赖于C。C#是微软开发的一种编程语言࿰ 查看详情

c++之父:rust等内存安全语言的安全性并不优于c++

在美国国家安全局(NSA)建议组织从C/C++切换到内存安全语言(如C#、Rust、Go、Java、Ruby或Swift)之后。C++之父BjarneStroustrup回应称,在他看来,NSA报告中提到的“安全”编程语言在重要应用程序中实际上并不优于C+... 查看详情

rust语言特性之所有权

新年开工,开启work&study模式,接着来学习RUST语言。作为一名C/C++程序员,C/C++语言中的指针是使用得最爽的,几乎无所不能,各种奇技淫巧也层出不穷。但C/C++语言中最折磨人的也是指针&#... 查看详情

美国国家安全局督促弃用c/c++,使用更安全的rustc#等!

作者|苏宓出品|CSDN(ID:CSDNnews)如果说此前Kotlin、Dart、Julia、Carbon 等后起之秀向老牌编程语言发起挑战进攻都是小打小闹,那么这一次 C、C++这几种常青藤编程语言则是真实地陷入了尴尬的境地。近日ÿ... 查看详情

美国国家安全局督促弃用c/c++,使用更安全的rustc#等!

作者|苏宓出品|CSDN(ID:CSDNnews)如果说此前Kotlin、Dart、Julia、Carbon等后起之秀向老牌编程语言发起挑战进攻都是小打小闹,那么这一次C、C++这几种常青藤编程语言则是真实地陷入了尴尬的境地。近日,... 查看详情

rust为什么我建议你学一下rust|rust初探(代码片段)

...行业中获得了越来越多的使用和投资,包括亚马逊、微软、Facebook、Discord和Dropbox。Rust语言旨在以简单的方式开发可靠且健壮的系统。Rust可用于修复高级软件以及硬件特定程序。[外链图片转存失败,源站可能有防盗链机制,建... 查看详情

Rust 中的惯用回调

】Rust中的惯用回调【英文标题】:IdiomaticcallbacksinRust【发布时间】:2017-04-2603:52:12【问题描述】:在C/C++中,我通常会使用普通函数指针进行回调,也可能传递void*userdata参数。像这样的:typedefvoid(*Callback)();classProcessorpublic:voidset... 查看详情