写点什么

Rust 正在「吞噬」我们的系统,C/C++ 是时候下课了

  • 2022-09-27
    北京
  • 本文字数:1818 字

    阅读完需:约 6 分钟

Rust 正在「吞噬」我们的系统,C/C++ 是时候下课了

C/C++是时候下课了,Rust 才是未来

 

Rust 正快速渗透我们的系统。

 

首个Rust编写的驱动程序正入驻Linux,微软 Azure 首席技术官 Mark Russionvich 也直言 C/C++这对主流系统语言是时候下课了,Rust 才是未来的发展方向。

 

但不少从业者仍然抱有反对意见。技术生态系统向来充斥着冲突与对抗,长久以来的编程语言战火已经不止一起。只不过这一回,战争的赌注比以往任何时候都更高。

 

C++最初于 1985 年进入商业应用,也就是任天堂游戏机 NES 登陆美国的那一年。当时那些时髦前卫的年轻程序员,如今已成长为各家企业的高管和顶梁柱,而他们对于 IT 基础设施的认知往往也永远留在了过去那个年代。于是其中很多人成了Rust的反对者,认为 Rust 能做的,C++本来就能做,而且好的程序员根本就不需要在编程语言层面寻求额外帮助。

 

没错,旧工具仍然有效,甚至能够满足大部分人的开发需求。再加上长期积累下来的技术惯性,导致如今市面上仍充斥着堪称“活化石”般的古老系统。法律和医疗行业仍在使用拉丁术语,宗教中的很多思维方式可以一路追溯到铁器时代,道理都是相同的。

 

但很多事实已经向我们证明,诞生于过去的语言终将不足以描述这个新世界。所以接下来就看谁能更好地紧跟时代的脚步,于是旧的事物决定以新的形式进行重新“编译”,以更好地同当今世界相兼容。

 

C/C++把安全开关交给开发者,Rust:“放着我来”

 

而导致C/C++与现实世界无法兼容的巨变,就是无处不在的异构分布式计算。

 

让我们放下手头的计算任务,看看上一代人和下一代人的计算应用场景。有多少任务在多少种操作系统实例上运行?这些代码部署在哪里?没错,大家马上会意识到大部分代码都驻留在共享环境当中,依靠某些底层技术实现沙箱/分区/隔离。

 

遥想当年,对 bug 的修复只能依靠发布新版本,这种方式在如今这个时代可能立即影响到数百万人的隐私安全,或者在国家层级的卫生系统中给勒索软件留下可乘之机。在这个 IDE 键入内容会被快速转化为全局输出的高效时代,C/C++仍然把安全的开关交给每位开发者,而 Rust 则表示“放着我来”。

 

没错,一些内核开发高手用不着编程语言的协助,毕竟他们已经用这种方式工作了 30 年都没出什么大问题。但请记住,这个世界上的开发者不全是高手,还有很多有待成长、对安全细节懵懵懂懂的新人。Rust 能在不影响性能的前提下降低风险,让更多人快速编写出高质量代码,这有什么不好的?

 

当然,Rust 并不是万金油,它只是更理解数据在现代环境中可能受到哪些意外疏忽的影响,而且知道如何在编译时以不牺牲性能的方式强制执行安全保护。这只是把起点设置得更完善,绝不是要限制开发者们的奇思妙想。

 

成功的语言需要与时俱进

 

成功的语言应该对需求做出反应,给孕育出这些需求的时代指明前进的道路。

 

C 的出现伴随着小型计算机的成长,而后延伸至 8 位微型计算机,在这里效率和可移植性才是重中之重。随着个人计算机强大到足以对复杂数据执行复杂任务,C++快速跟进解决了软件范围扩大的问题,并在 1990 年代趋于稳定。

 

与二者类似,Rust 诞生自 2010 年代的计算成熟度,主要强调安全性、可靠性和并发性,也就是分布式时代需要解决的核心问题。

 

转型绝非易事。

 

开源项目需要由大量熟练的开发者参与贡献,并由经验丰富的专家进行代码检查和修复。从这个方面讲,C/C++的系统技能积淀更厚重,远非 Rust 可比。但是,真正优秀的系统工程师应该关于进行形式与抽象思考,毕竟这才是不同编程语言之间的最大共性。

 

所以到底能不能完成语言交接,很大程度上取决于文化和自我意识,而绝非技术熟练度。任何人都很难彻底放下自己磨练多年的技艺,马上转投新语言的怀抱,但只要这代表着新时代下的实际生产力要求,我们就必须抛开成见、做正确的选择。

 

其实我们这些经历过变革的群体是幸福的一代人。1970 年代,信息技术一步步从只有银行业、科学家们关心的小众概念,发展成了影响每个人日常生活的普适成果,而这样的颠覆式转变只经历了两代系统语言。这是专属于开发者的 moment,是只有 IT 行内人才能产生共鸣的美妙体验。

 

从现实来看,Rust 有着成为第三代语言标杆的所有特质。它站在巨人的肩膀上,专注于解决现实问题,有望释放出更多人的开发才能以创造更美好的未来。这既是种技术变革,也是一波文化变革。人类这个物种向来不惮于直面时代的更迭与挑战,而新的进击钟声已经敲响。所以请大家放平心态,毕竟 Rust 终有一天也将被取代,正是这样的传承与发展构成了人类社会辉煌灿烂的历史。

 

原文链接:

 

https://www.theregister.com/2022/09/26/rust_column/

2022-09-27 15:3318735
用户头像
李冬梅 加V:busulishang4668

发布了 1231 篇内容, 共 848.9 次阅读, 收获喜欢 1323 次。

关注

评论 3 条评论

发布
用户头像
如果C++实现了一个新的安全编程模型呢?现在说放弃为时过早吧。
2022-09-29 11:16 · 广东
回复
要能实现早就实现了,底层已经无法实现。
2022-09-30 08:31 · 辽宁
回复
用户头像
C/C++更开放,编译器的实现可以是厂商。而Rust掌握在它的核心团队里,就是不知道以后有没有版权问题,会不会被美国政府拿来做制裁的筹码。
2022-09-29 11:15 · 广东
回复
没有更多了
发现更多内容

python DataFrame数据合并 merge()、concat()方法,拿下我人生中第7个Offer

程序媛可鸥

Python 程序员 面试

从硬件到软件,教你从零搭建智慧农业大脑

华为云开发者联盟

物联网 智慧农业 华为云IoT 小熊开发板 STM32L431芯片

Rust基本概念

Shine

读书笔记 rust

3个月夯实基建,鲜丰水果这样实现研发数字化

阿里云云效

云计算 阿里云 云原生 持续交付 研发运维

向工程腐化开炮|动态链接库so治理

阿里巴巴终端技术

android 动态链接库

如何基于 OpenKruise 打破原生 Kubernetes 中的容器运行时操作局限?

阿里巴巴云原生

社区活动 | Apache Pulsar SIG(特别兴趣小组开放)!欢迎大家加入

Apache Pulsar

开源 架构 云原生 Apache Pulsar pulsar 社区

Kafka 常用命令总结,高级Python面试题

程序媛可鸥

Python 程序员 面试

龙蜥开发者说:从入坑到入门 | 第 2 期

OpenAnolis小助手

开源 龙蜥社区 开发者说 技术的力量

nginx5种负载策略的设置方法,看完直接怼产品经理

程序媛可鸥

Python 程序员 面试

沈阳飞桨领航团Meetup邀请你来,探索AI如何赋能智慧城市

百度大脑

使用MASA.Blazor写一个标准的查询表格页

MASA技术团队

大疆被制裁,请马上卸载postman!

Liam

程序员 Postman 开发工具 API swagger

移动平台WorkPlus助力医院智慧信息化建设

BeeWorks

python 同时迭代多个序列,还没吃透内存缓存LruCache实现原理的看这篇文章

程序媛可鸥

Python 程序员 面试

2021年【大学生Python学习】社区&&小博主,2021最新大厂高频微服务面试总结

程序媛可鸥

Python 程序员 面试

2022年中小企业数据安全如何保障?对比华为云与其他云计算大厂,15分钟的字节跳动视频面试

程序媛可鸥

Python 程序员 面试

阿里巴巴副总裁陈丽娟:我对阿里云产品生态的思考 | 云原生加速器观点

阿里巴巴云原生

云原生技术赋能ISV实现应用现代化

York

云原生

常见问题(FAQ)页面的搭建步骤

小炮

2022年中国在线音乐市场年度综合分析

易观分析

Flutter 图片库高燃新登场

阿里巴巴终端技术

flutter

jQuery入门到精通学习教程,收藏我这篇就够了,Alibaba高并发业务实战文档

程序媛可鸥

Python 程序员 面试

Python 实现二叉树前序,中序,后序,零基础也能看得懂

程序媛可鸥

Python 程序员 面试

图数据库实操:用 Nebula Graph 破解成语版 Wordle 谜底

NebulaGraph

数据库 开源 图数据库 分布式图数据库

飞桨助力动车3C车载智能识别,为动车组运行保驾护航

百度大脑

Python GUI编程:关于 tkinter 怎么才能写出更好看的界面,华为架构师深入讲解Python开发

程序媛可鸥

程序员

Python 开发编码规范,阿里面试100%会问到的JVM

程序媛可鸥

Python 程序员 面试

昇腾CANN论文上榜CVPR,全景图像生成算法交互性再增强!

Geek_32c4d0

昇腾

CVE-2021-3129:Laravel远程代码漏洞复现分析

华为云开发者联盟

安全 漏洞 代码复现 CVE-2021-3129 base64 标准

浅谈NIO和Epoll实现原理

Linux服务器开发

网络编程 epoll Linux服务器开发 Linux后台开发 网络io

Rust 正在「吞噬」我们的系统,C/C++ 是时候下课了_AI&大模型_Rupert Goodwins_InfoQ精选文章