如何看待 Rust 的应用前景?
为什么这么说呢?首先我们来说一下为什么很多情
工作上写C++,从去年底开始关注Rust,至今用Rust写了一些和交易相关的小程序。总体感觉是如果有一门语言能够取代C++,那么它只可能是Rust。 为什么这么说呢?首先我们来说一下为什么很多情况下人们会选择C++。 很多人用C++的不是因为C++有多好,只是因为如果想要写一个接近实时高性能,稳健,并有足够开发效率的大程序,通常只有C++可选。这有如下几个原因: 总体上来说,就是一个高性能的静态强类型多范式语言。 但同时,C++问题很多应用情况,这些问题不是语言设计者能力不够,而多数是历史原因与当时抉择所看重的东西导致的。C++一开始的时候一个目标是与C兼容,即使C当年算是极其天才的设计(和Unix一样),它毕竟是1972年的语言,当时设计导致的问题虽然我们现在已经很清楚,C++也因为兼容性而把它保留了下来。大家都知道Python 2和Python 3的故事,甚至IA64和x86_64的故事,所以也很容易理解C++为什么要一直保持向前兼容。 Rust由于是一个新语言,所以它完全没有历史包袱。甚至在今年之前的五年中,社区一直完全肆无忌惮的做和之前完全不兼容的改动。如果发现有个新设计确实公认更好,语言作者们不会为了向前兼容而放弃改变。近30年的语言理论研究和实际软件工程的经验有足够多的优秀设计可以直接拿来使用。Rust作为一个新语言显然不会放过这个机会。在可以完全重来的前提下,Rust相对C++有哪些新特性呢? 当然,如果只有这些小改进,C++程序员可能看了看觉得,“不错哟”,然后就接者回去写C++了(比如D)。新语言必须有杀手级的特性,这才是转语言的关键动力。 这一杀手级的特性就是Ownership和Lifetime。Rust首页宣称的"prevents nearly all segfaults, and guarantees thread safety"是超级诱人的,因为这是在没有GC和runtime的情况下实现的。 C语言的野指针,和线程安全问题会导致很多极难发现,诊断和修复的bug。C++,尤其是C++11费心思去缓和了这一问题,但这仍然是没有GC讲求性能语言的核心劣势。Rust这个特性具体是如何的呢? 这一特性所导致的编程可以衍生很多新的优化可能,而这都是在保证完全的前提下。实际上,催生Rust的浏览器Servo项目一个目标就是安全问题,Rust在安全性让heartbleed问题出现的可能大大减小。 最后,Rust是一个脚踏实地(Practical)的语言。这意味着它不遵循某一个范式(paradigm)或者是为计算机科学教学而生的语言。这是一个写给开发者的语言,如果特性经过权衡发现对开发有益,语言作者不会因为它破坏了某种范式而不去加它。这种哲学有些类似于当年Linux相对Mimix选择monolithic kernel而不是结构上更干净的micro kernel,因为Linux需要性能。这样的选择会让语言更接近使用者,让使用者更开心。 所以用C++的那些人的那些要求,Rust都能达到或者甚至改善。 在语言层面上Rust无疑比C++优秀得多的一个高性能静态强类型多范式语言。 如 Rust 1.0 Announcement 所说,1.0标志着Rust已经稳定。你能在1.0编译器上使用的特性都会保证继续存在,除非重大正确性(soundness)问题出现。现在已经没有“下一个版本出来,之前的代码就不能用”的顾虑了。 1.0的发布是Rust发展的一个动力。当然真正长时间的采纳率还要看语言本身质量和社区环境。对这两点我是相当看好的。要想取代C++绝不是一件容易和快速的事,这不紧只是语言的问题,而有很多不可控的其他因素,让我们拭目以待吧。 (编辑:威海站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |