Discuz! Board 首页 资讯 查看内容

资讯

订阅

微软CTO建议业界弃用C/C++采用Rust,遭C++之父回怼

2022-10-03| 来源:互联网| 查看: 317| 评论: 0

摘要: 出品|OSC开源社区(ID:oschina2013)近日,MicrosoftAzureCTO、Sysinternals的主要开发者MarkRussinovich在其社交账号上发布动态......
白癜风检查

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

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

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

C++之父回应

针对MarkRussinovich的言论,外媒TheRegister采访了C++之父BjarneStroustrup;Stroustrup则为C++进行了辩护:

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

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

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

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

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

引发开发者热议

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

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

还有评论表示:

GeorgeOu:我是Rust的忠实粉丝,但对于那些认为有安全版本的C和C++的人,你怎么说?TedMielczarek:要么他们在骗你,要么他们建议的东西需要有效地重写你的整个代码库,所以你最好使用Rust。

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

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

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

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

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

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

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

GStreamer准备将Rust编写的插件作为其官方二进制版本的一部分发布(https://www.oschina.net/news/210942/gstreamer-rust-plugins)

相关链接: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/

分享至 : QQ空间

10 人收藏


鲜花

握手

雷人

路过

鸡蛋

收藏

邀请

上一篇:暂无
已有 0 人参与

会员评论

关于本站/服务条款/广告服务/法律咨询/求职招聘/公益事业/客服中心
Copyright ◎2015-2020 北市百事通版权所有 ALL Rights Reserved.
Powered by 北市百事通 X1.0