写点什么

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:3318623
用户头像
李冬梅 加V:busulishang4668

发布了 1208 篇内容, 共 832.5 次阅读, 收获喜欢 1313 次。

关注

评论 3 条评论

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

【LeetCode】托普利茨矩阵Java题解

Albert

算法 LeetCode 28天写作 2月春节不断更

基于证券云服务的总体架构设计应该怎么做?

Jason Tien

一文带你熟悉Pytorch->Caffe->om模型转换流程

华为云开发者联盟

网络 模型 PyTorch caffe 算子边界

我与技术面试那些事儿

我是哪吒

CSS html 大前端 28天写作 2月春节不断更

为什么不推荐使用汉字作为密码?

不脱发的程序猿

程序人生 密码学 28天写作 二月春节不断更

架构设计篇之微服务实战笔记(三)

小诚信驿站

架构师 刘晓成 小诚信驿站 28天写作 架构师成长笔记

日记 2021年2月22日(周一)

Changing Lin

2月春节不断更

超强前端面试真题+资源推荐

爱学习

面试 大前端 面经

浅谈nodejs进程和线程

梁龙先森

大前端 nodejs 2月春节不断更

话题讨论 | 程序员是做前端开发好,还是后端开发好呢?

xcbeyond

程序人生 话题讨论

技术扫盲:关于低代码编程的可持续性交付设计和分析

小傅哥

Java 小傅哥 服务端 低代码开发 可持续交付

MySQL查看及杀掉链接方法大全

Simon

MySQL

Apache Flink 在快手的过去、现在和未来

Apache Flink

flink

容器 & 服务:一个Java应用的Docker构建实战

程序员架构进阶

Docker 容器 七日更 28天写作 2月春节不断更

用Stylish精简极客时间专栏页面

Tao

CSS

诊所数字化:诊所开展私域运营的优劣势

boshi

医疗 私域运营 七日更 28天写作

话题讨论 | 你在互联网大厂是个啥级别?

架构精进之路

话题讨论 28天写作 话题王者

Dapr 知多少 | 分布式应用运行时

架构 云原生 k8s dapr

架构师不至于“架构”-《架构师应该知道的37件事》阅读笔记

Harris

读书笔记 架构 架构师

2021最新百度/平安/蚂蚁金服/腾讯/拼多多面经总结(附答案解析)

比伯

Java 编程 架构 面试 计算机

我身边的高T,问了Java面试者这样的问题......

京东科技开发者

MySQL 数据库

技术解析 | Doris SQL 原理解析

百度开发者中心

百度 Doris SQL优化

WinDbg 分析高内存占用问题

dotnet windbg

话题讨论 | 现实中程序员是怎样飞快敲代码的?

xcbeyond

程序人生 话题讨论

电影台词反向搜索视频片段,这个工具也太好用了吧|33 台词

彭宏豪95

效率 效率工具 电影

配合Github Actions 做一个自动推送的 Rss 订阅机器人

Leetao

Python RSS Github Action

Flink SQL 性能优化:multiple input 详解

Apache Flink

flink

还愁追不到女神吗?一键生成舔狗日记,一秒速成舔狗之王

不脱发的程序猿

程序人生 28天写作 二月春节不断更 舔狗文化

JVM又曾放过谁,垃圾终将被回收!

Simon郎

Java 大数据 架构 后端 JVM

先收藏!关于Java类、接口、枚举的知识点大汇总

华为云开发者联盟

Java 接口 枚举

为图片添加Emoji,微信这隐藏功能让你不花冤枉钱

彭宏豪95

微信 效率 效率工具 emoji

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