• 中文
    • English
  • 注册
  • 查看作者
  • Azure CTO呼吁不要使用 C/C++ 创建新项目,C++之父回应:你们这些高管就爱喜新厌旧

     

    微软Azure CTO Mark Russinovich呼吁放弃C和C++这两门久经时间考验,被广泛应用于高性能本机应用程序开发的编程语言。C++之父Bjarne Stroustrup回应称企业高管就是喜欢新事物,且一些人总爱发表非常片面的言论。

     

    本周一,Russinovich敦促科技行业放弃C/C++。他强调,“说到编程语言的选择,是时候停止用C/C++创建新项目了。Rust才是无垃圾回收语言中的最佳选项。出于安全性和可靠性的考量,整个软件行业都该弃用这两种陈旧的语言。”

     

    Azure CTO呼吁不要使用 C/C++ 创建新项目,C++之父回应:你们这些高管就爱喜新厌旧

     

     

    从C++专家到“Rust 传播者”

     

    Mark Russinovich 本人是著名的黑客和逆向工程大师,2005年,曾运用逆向工程在索尼DRM产品中发现  复制保护有害程序。该曝光事件在当时极其有名,因为 rootkit 性质恶劣,它通过修改操作系统,阻止计算复刻CD 副本,并无法卸载,甚至无法被反病毒和反间谍程序检测到,为其他恶意软件打开了渗透Windows PC 的大门。另外,他还曾利用闲暇时间写过三本安全相关的小说(堪称摸鱼大师)。

     

    在Reddit上,他被人誉为“地球上最有才华的 C/C++ 程序员之一”。在加入微软之前,Russinovich 编写并发布了数十个流行的 Windows 管理和诊断实用程序。 2006 年,微软收购了他一手创办起来的企业Winternals Software,Russinovich 也因此加入微软,成为微软技术研究员——这是它可以授予的最高荣誉之一,随后职位变更为微软 Azure 主架构师以及CTO。

     

    Azure CTO呼吁不要使用 C/C++ 创建新项目,C++之父回应:你们这些高管就爱喜新厌旧

     

    截图来源:

     

    因其微软Azure CTO的身份,Mark Russinovich 的评论值得注意,因为微软的核心产品,如 Windows、Office 和 SQL Server,主要是用 C 和 C++ 编写的。而在Azure 云平台上得到广泛应用的Linux也是如此,主要语言为 C 和 C++。根据报道,Linux缔造者Linus Torvalds已经证实,除非出现不可预见的特殊状况,否则Linux 6.1版内核将使用Rust代码。作为向来以C语言编写,同时包含少量汇编及胶水脚本的传世项目,Linux对Rust的接纳堪称里程碑式事件。

     

    Rust是Graydon Hoare出于个人爱好设计的编程语言,于2006年在Mozilla初步成型,并在2010年正式亮相。随着2015年Rust 1.0的发布,它也逐渐以C/C++替代选项的姿态得到人们的广泛关注。

     

    自那时起,Rust连续七年成为Stack Overflow年度调查中最受欢迎的编程语言。尽管学习难度不低,但它还是被各大科技巨头先后纳入自家项目当中。

     

    苹果、亚马逊、谷歌、Meta乃至 等等,都已经在功能开发和实际生产中使用Rust。 也是用Rust编写而成,据称在提高性能的同时削减了CPU与内存用量。

     

    Rust的最大优势在于出现内存损坏bug的几率更低,也就让软件变得更加安全。至少自2019年以来,微软就一直在讨论放弃C/C++、转用Rust的可能性。微软还在开发自己的云内存安全编程语言,即Verona项目。所以,Russinovich这次提出放弃C/C++的主张,可以说是早有先例。

     

    另外,这也不是微软第一次公开支持 Rust。三年前, (MSRC)曾在博客上发表文章表示“ Rust 是目前 C 和 C++ 的最佳替代品”。 MSRC 团队还表示,“大多数修复的漏洞和分配的 CVE 都是由开发人员无意中将内存损坏错误插入到其 C 和 C++ 的代码中造成的。自2006年以来,微软修复的CVE中约有70%跟内存安全问题相关。这意味着,如果该软件是用 Rust 编写的,那么这些安全问题很可能会被消除。”

     

    外媒The Register询问了Russinovich的建议是否会在全公司内部推行,但微软方面拒绝置评。

    当然,单靠Rust本身并不足以保障软件安全。它虽然提供针对内存安全漏洞的防御,但却无法消除其他威胁元素。

     

    正如Rust说明文档所言,“Rust是种既安全、又不那么安全的语言。”开发者有可能在某些任务中编写出不安全的Rust代码,这是无法单靠语言自身解决的问题。另外,Rust也解决不了健全软件设计范畴之外的攻击向量(例如社会工程)。但必须承认,Rust的品质相当过硬,在自己的领地内足以支撑起更强的安全信心。

     

    Rust基金会执行董事兼CEO Rebecca Rumbul在采访中表示,“我们希望各方的支持和肯定能推动针对Rust基础设施和技术社区的持续投入,确保Rust能够在未来的发展道路上延续安全、可靠和可持续等优势。”

     

    C++之父:ISO C++已经实现了可靠的内存安全

     

    对此,外媒请C++缔造者Bjarne Stroustrup发表了评论。在回复中,Stroustrup站在C++的立场做了一番辩护。

     

    人们总是迷恋那些看似能让生活更轻松的新事物,这一点在企业高管身上体现得尤其明显。

     

    “另外,选择新事物也能激起人们的兴奋之情;相比之下,解决旧有知名工具中的已知问题就显得没那么‘酷’。很遗憾,新语言往往需要多年历练和完善,才能在广泛的应用领域中获得与成熟语言相比肩的水平。但大多数人看不到一点,而且 总爱发表一些非常片面的评论 。”

     

    Stroustrup表示,“当然,安全性在大多数开发场景下都至关重要,所以多年来我一直致力于提高C++的安全性。”

     

    “我们现在已经在ISO C++中实现了可靠的完美类型与内存安全。也就是说,每个对象都会根据它的定义类型进行使用。具体而言,我们消除了空指针问题、能够捕捉范围错误,并消除了数据争用。请注意,包括Rust在内,任何一种号称‘安全’的语言都无法彻底避免风险代码。”

     

    Stroustrup还以参与编写的C++ Core指南为例,提出“这份指南的基本思路,就是定义一组必须遵循的安全规则,而后通过静态分析强制执行这些规则。之所以需要这些规则,是因为任意C或C++代码本身无法自证安全。”

     

    “这就是符合ISO标准的C++代码,可以强制要求开发者通过分析器保障代码安全和更新。目前,微软Visual Studio、Clang Tidy等都提供类似的分析器实现选项。”

     

    “C++正在积极进步,而且已经在实际应用当中发挥出良好的灵活性和性能表现。当前,各类项目中部署的C++代码多达数十亿行。”

     

    “所以无论是直接替换掉这些C++代码,还是所谓让它们更加‘安全’,都会是一项艰巨的任务。如果没有分期分批、持之以恒的努力,大量不安全的C代码和陈旧C++代码将‘永远’存在。纵观历史,在颠覆性革命出现惨烈失败之后,更温和的演进方式往往能够最终取得成功。”

     

    参考链接:

  • 0
  • 0
  • 0
  • 203
  • 请登录之后再进行评论

    登录
  • 任务
  • 实时动态
  • 发布
  • 单栏布局 侧栏位置: