作者心声:这篇文章我写得可是小心翼翼,尽量避免任何过于肯定或者容易引起误解的表述。我也有自己的正常工作、没办法真正全身心投入到 Rust 的宣传工作,所以只能用这样一篇文章表达自己的感受。篇幅有限,文章内容肯定无法面面俱到,所以我把自己想到但没能讨论的部分都列在了文末。
每当出现关于 Rust 的讨论,最终大抵都要以“炒作”问题结束。
很多朋友觉得 Rust 在网上水军太多,每天都会听到“Rust 最棒”、“人家 Rust 如何如何”、“Rust yyds”之类的言论。这帮家伙就不能消停一会?
确实,Rust 在网上热度很高,但大家还记得当初 Java 刚兴起时的情况吗?如果不记得,恐怕是因为各位还很年轻。
那时候市面上充斥着满是废话的商贸杂志,而且神奇的是,他们都爱报道计算机方面的内容。于是我们就会看到一系列关于 Java 语言、发展前景以及它能解决的问题等文章。
那时候的互联网还不像现在这样充斥着很多极端情绪和“复读”习惯,所以倒没有酝酿出激烈的争论,但人们的烦躁之情是共通的。
Java 语言那时候还没有得到实践检验,这种未经证实的技术报道太多了——没人用过、没人了解、没人在乎。毕竟虚拟机运行时之前就有,C 和 COBOL 也都非常成熟了,为什么非得拿 Java 来硬凑热点?
后来的故事大家都知道了,Java 不负众望、宰治了整个软件行业长达 20 年。接下来才是重点,咱们聊聊为什么没必要对“炒作”抱有过度恶意。
在 Rust 出现之前,我们没有必要反复强调某些问题,因为根本就没有真正的解决方案。每个人都知道缓冲区溢出是个大麻烦,而 Java 等语言可以解决问题;大家都清楚自主编写的数据结构缺陷多多,但 Python 等语言在这方面能出把力。
所以那时候的人们还不会以某一大类问题(例如「组合便捷性」和「内存安全性」)为切入点讨论痛点。毕竟既然不打算重新设计一种能解决问题的编程语言,谈得这么宽泛完全是在浪费时间。
唯一称得上共通难题的就只有安全性问题,但之前的解决思路要么是在性能与可维护性之间进行权衡(Python、Ruby、Erlang),要么就是维持在可接受的水平上然后弃之不理(Java、JavaScript、PHP)。
这些问题、甚至是整个问题类别,都成了程序领域中的“背景辐射”。每个人都知道有这些问题、每个人偶尔都会抱怨,但就是没有解决的办法。
直到 Rust 出现之后,大家才意识到,出现了一种能解决所有问题的技术,这意味着编程时代开始由问题与解决方案的多对多关系、真正走向多对一的统筹处理阶段。
于是我们在网上的讨论中逐渐开始从当前问题出发总结问题大类,甚至还要把解决思路拓宽到其他问题大类当中!这本应是个巨大的优势,但正是这种优势让 Rust 显得似乎一夜之间就无处不在,而且跟我们日常工作中的各个环节都息息相关。
作为技术人员和工程师的核心特征,大家应该很擅长冷静客观地评估系统。你可以先把“炒作”这码事放在一边,专门根据实际表现考量解决方案。决定判断的应该是事实、而非情绪,对吧?一旦因为“炒作”而抵制 Rust,那我们就离讨论的基本诉求越来越远了。更不用说极端的人身攻击了,那是小孩子打架般的玩意,不值一驳。
我之所以坚持认为“Rust 炒作论”是种有害的侮辱性言论,并不是因为我从 Rust 基金会那拿了钱,或者是想劝说大家购买 Rust Enterprise。
坦白地讲,我在编程行业待了 30 年,体会过用没有 type 安全设计的语言进行大规模重构,用会产生 GC 开销的语言编写快速服务,用缺乏良好内存清理机制的语言编写紧凑代码,再把这些成果运行在微型计算机以及后来的分布式多核心集群上。
这些我都干过,而且都成功了……但过程非常非常痛苦。所以当我看到 Rust 的一刹那,我就知道这是个好东西。
我之所以力推 Rust,是因为它真的很出色、没准能帮助大家解决现实问题(包括很多你已经觉得无药可救的问题)。这篇文章完全发自肺腑、出于真诚,我只谈自己的切身感受与判断;如果大家有不同意见,也请以同样真诚的态度给出说明,感谢各位。
更重要的是,别搞什么“网络纠察队”。所谓针对 Rust“水军”和“炒作”的抱怨其实就是一种网络纠察行为,或者说是对人们的立场乃至表达方式做出的另一种抱怨。相信很多朋友也和我一样,已经厌倦了这种毫无意义、既无成效也无建设性的反复争论。
我写这篇文章,是因为我自己有表达的冲动。各位觉得不喜欢可以自行离开,这很正常。但我绝对不会刻意去迎合某些人脆弱的神经,也不想顺应那些在网上喷 Rust 喷到血压上升的家伙的立场。
我的出发点非常单纯:只要是能给编程行业带来实质性改善的好东西、只要是能让程序员日常工作更轻松的东西,我就支持。
曾几何时,Java 也卷起过一股“风潮”。但随着“炒作”的消退,这种争议也随之瓦解。
总有人说“真正的”程序员绝不用 Java,我觉得 Rust 倒是没有这个问题,因为它“够难”(但其实并不难,至少没大家想象的那么难)。
之所以没人把 Java 视为威胁,是因为当时互联网行业正在快速发展,众多新岗位的涌现让新语言成为单纯的工具而非威胁。当时最大的分歧,就是很多人觉得 Java 难度低,“格局”不够,用了它好像就跟普罗大众距离拉近了一般,无法凸显自己编程精英的高中地位。
但如今不同了,经济形势放缓,软件开发行业也受到了波及,每个人都需要谨小慎微地规划未来的前进道路。与其靠自己的脑袋记住一切陷阱,为什么不直接使用一种能消除这些陷阱的语言?谁把精力节约下来用在更有意义的地方,谁就能在残酷的市场竞争中占据主动。
从企业的角度来看更是如何,Rust 能帮助大家省下代码调试或重构方面的成本,规避安全演习开支,并通过近裸机运行方式省下硬件投入。
我现在的 Rust 编程速度已经不亚于 Python 了,相信大家也能做到。软件的上市时间非常重要,而 Rust 与脚本语言之间的开发效率差距正在迅速缩小。如果继续顽抗到底,那你的解决方案发布速度会变慢、启动及维护的成本会更高,其他人就可能在你继续抱怨的同时悄悄瓜分掉你的市场份额。
正因为 Rust 具有显著的竞争优势、能够编写出超越其他语言的高质量代码,所以招聘经理们才开始用 Rust 水平衡量顶尖人才的业务能力。在不久的未来,这种标准将成为新的常态,哪怕每天把 Rust 喷上一万遍也改变不了这个现实。
我知道,很多朋友会在评论区里纠正文章里的某些细节,这里我就自己列出来算了:
原文链接:
领取专属 10元无门槛券
私享最新 技术干货