整理 | 丁广辉 责编 | 张红月
出品 | CSDN(ID:CSDNnews)
每位程序员都很了解自己使用的语言的优缺点,有些语言的优点很明显,但它所存在的缺点往往也会让人绞尽脑汁,却又无可奈何。比如Java的优点就很明显,简单,安全,稳定,还能跨平台使用。但是它所需要的内存量太大了,因为他还需要一系列的硬盘空间来存储Java文件和.class文件以及对应的版本文件。
同样的Python也有很明显的优点,编写简单,有丰富的内置代码库以及大量的第三方库。但是运行速度慢,写出来的代码还不能加密。我们在过去的程序编写中或多或少地留下了一些无法解决得问题,但直到Rust的发布。我并不是说Rust就是最好的,它也存在问题,但它确实解决了不少以前让我们头疼的难题。
Rust是诞生于2015年的编程语言,在2016年被 Stack Overflow 评选为最受开发者喜爱的语言。国内外许多知名互联网或科技公司纷纷拥抱Rust,用它来优化或者重构技术栈,比如字节跳动的飞书,Google 的 Fuchsia 、Linux 内核也开始尝试Rust等。那么Rust好在哪里呢?
首先 Rust 没有历史包袱,采百家之长。从语言的内核看, Rust 重塑了对基本概念的理解。比如它清晰地定义了变量的生命周期,不仅摒弃 GC 这样的内存和性能杀手,还不用关心手动内存管理,让内存安全和高性能兼得。
其次,从语言的外观来看,它用起来很像 Python/TypeScript 这样的高级语言,表达能力一流,但性能丝毫不输于 C/C++,表达力和高性能二者兼得。
所以,集表达力、高性能、内存安全于一身的 Rust ,在很多场景里都能大施拳脚。除了在传统的系统开发领域,如操作系统、设备驱动、嵌入式等方向高歌猛进之外,Rust 还在服务端高性能、高并发场景遍地开花。
但是就是这样一个很好用的新兴底层语言,却依然有很多人在“抨击”说Rust是在炒作。对此,一名拥有30多年编程经验的开发者喊话,请停止吧!
Rust为什么会被“炒作”?
事实上,每次讨论关于Rust的话题都会以无休止的抨击Rust过度宣传而告终,有不少人认为它“言过其实了”认为那些说Rust好话的人都是在为Rust炒作。
还有人记得Java横空出世的时候吗?可能很多人都已忘记,也可能是因为你太年轻。在过去的日子里,有很多关于Java文章的讨论。有不乏对Java的前景的赞美,当然也有一些人“看不起”Java并贬低它,说它已死之类的言论。当然我们都知道最后的结果如何。Java不负众望,在这个行业风生水起了20多年。当时的互联网还不是个充满仇恨的地方,但是对Java的抨击和现在的Rust是一样的,所以请不要在抨击Rust炒作之类无意义的事情了。让我们把视线聚焦到真正的解决方案之中,如何解决现实的编程问题才是第一位。
在Rust出现之前,反复强调没有解决方案的问题是毫无意义的。例如Java对解决缓冲区溢出问题很有帮助,Python则有助于改善开发人员编写数据结构。而对于类似ease of composition和内容安全这样的问题就没有讨论的必要,因为除非重新设计一门语言,否则根本没有可用的解决办法。当然在近几十年,有关内存安全问题已经是一个被充分理解的问题类别,但要解决它需要在性能和可维护性方面做出权衡(Python、Ruby、Erlang),要么就不能真正解决它(Java、JavaScript、PHP)。
面对种种问题,大家除了抨击之外,却一直没有找到最佳的解决方案。只能用不同的技术解决不同的问题,然而Rust的诞生改变了这种情况,人们用Rust就可以解决大部分问题。这就让Rust可以存在于各种程序中,让人觉得它无处不在,且与我们的程序息息相关。他能帮助技术人员编写更好地程序,正是因为它够好,所以才会有这么多炒作。
Rust对你是有帮助的,这是事实
技术人员和工程师都有一个特点,就是他们善于冷静的评估系统,可以抛开“炒作”,只关心这个技术能否帮助他们解决问题,而不会因为内心排斥就绝对不用。也就是说他们不会因自己认为Rust在“炒作”就抵制Rust。
我没有拿Rust基金会的钱,骗你去使用Rust。作为一个拥有30年编程经验的开发者,我曾成功地在没有类型安全的语言中进行了大型的重构,也曾在产生GC开销的语言上实现快服务,也曾在内存支持较差的语言上写过严格的代码,也曾在微型机进行编程,也曾在分布式多核集群中写代码。所以当看到Rust发布更新时,我知道这对开发者来说,又多了一些“利器”,因为它可以让开发者解决诸多让人头疼的问题。
我之所以在你的话题中提到Rust,是因为它和你谈论的话题有一定的关联,甚至能解决你遇到的问题。就算你对Rust感到厌烦,也无法改变它能帮助你的事实。当然你可以选择不同意我的观点,那就请你就我所说的观点提出异议,并像我真诚的对你说我的观点一样,真诚的回应我。
互联网技术是不断迭代更新的
所有的编程语言都是一种“时尚”,一旦热度平息就会消失,我想这不是Rust的问题,也不是某一个语言的问题。互联网和行业的发展意味着总会有某种技术逐渐没人使用直至消失,但总会有一种新的技术来接替它。
你能记住程序中的所有陷阱,并且学习所有编程技巧和编程过程中的注意事项来避免问题的发生。但是另外一个用其他语言的人会将你替代,因为他的程序不需要为这些问题浪费时间。还有一些公司选择不在重构和调试上花那么多的钱,这样他们就可以减少安全测试的支出,于是你所会的对于这些公司就没用了,你还是会被逐渐淘汰。而我可以像写Python一样快速的写Rust,并且还能兼顾Java的优点。因此我能更快的写出安全稳定的程序。所以我会被企业看重,而你只能被淘汰。这不是个人能力的问题,而是企业需要的人和技术在不断更替。
现在技术人员了解和使用Rust是有竞争优势的。招聘经理通过它来筛选最优秀的人才,因为他们知道Rust有助于技术人员在其他语言中写出更好地代码。在不久的将来它将成为招聘桌上的最重要的部分。