作者:天象

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


其实,Rust是没法取代C++的,没有任何一个语言能取代C++。C++太大了,以很多毫不相干的方式应用在很多毫不相干的领域里面。Rust只会取代C++的应用场景里的一部分,就像很多语言做过的一样,但时代已经不同了,不可能再发明一个C++这样高大全的语言了。因此,也没有办法比较Rust和C++的优劣。

C++大概有这么几个主要的应用场景:

高性能服务器:高性能,高抽象

GUI:中等性能,极高抽象

编译器:高性能,极高抽象

密集计算:极高性能,中等抽象

操作系统:高性能,中等抽象

大型游戏:高性能,高抽象

有没有极高性能,极高抽象的项目呢?其实就是STL,也就是C++本身。 那么,Rust,从现在的样子看,它的特性是高性能、高抽象,这一块确实是至今大家仍然被迫用着C++,没有别的语言可转的。那么,如果一切顺利的话,服务器和大型游戏将会有不少新项目转向Rust。对于Rust来说,世界年轻,大有可为。

然后就是Rust缺的,首先是极高性能的部分,对于C/C++来说就是指针运算。Rust本身语法比较封装,跟C++和Fortran比还是不够底层,再加上C++编译器几十年来的优化,只能说Rust不是干这个的。然后是极高抽象的部分,Rust明显是不能跟C++ class+模板的豪华阵容相比。当然,很多时候程序的抽象在高度分层的抽象层中体现,跟语言本身关系不大。但是像GUI库和编译器这种数量上很多的抽象问题,缺乏原生抽象特性就会显得无力。应该说,很高兴C++还在继续进化,让它能在不同的领域都能面对竞争对手的挑战,不至于让昔日的巨人只剩下情怀和旧代码。