对比 Go 语言,Rust 有什么优势和劣势?

Python016

对比 Go 语言,Rust 有什么优势和劣势?,第1张

我并没有什么编程的经验,觉得编程实在是太复杂了,不喜欢去研究太多,对这个也不怎么懂,只能说自己是个半吊子,就是所掌握的知识,也是东拼西凑的,朋友和我说点儿,自己去书上看一点儿,只能说根据自己的体验给出一些体会吧。

Rust的优势是:

1、Rust把安全、精确的内存管理作为一切的中心放在首要的位置。

2、Rust同时拥有特别强的控制性和特别强的安全性。

3、Rust语言通过: 优秀的类型系统设计、 严格的编译器静态审查、 配合程序员局部核对、加上少量的运行时校验,保障了内存安全。

4、Rust的语言特别的复杂,导致学习曲线比较陡峭,对于初学者来说难度较大。但学通之后将终生受益。

5、效率高,速度特别的快

6、 支持范型

7、 社区活跃度很高,更加的强调了社区的作用。

8、Rust 有更强的语义,更容易捕获错误的逻辑,编译器直接检查出你代码中的不安全的部分

Rust的劣势是:

1、 语言相对来说比较复杂,对于新手来说,让新手摸不着头脑。

2、还不算太稳定。

其实我觉得什么代码啊编程啊这些东西还是比较适合理工的学生去研究,我一看脑袋就大,完全不明白在讲什么。我大概了解的就是这些,语言的话大家可以多方面的去了解,也不是说有缺点就是不好,看配置看个人吧,每个人习惯不一样,也许有的人用不稳定的还觉得挺好呢,有的人就喜欢比较完美的,在我看来编程这个东西真的是很复杂,会有很多的代码,这些代码弄得我自己头都大了,有的时候还得去恶补一下。

对于Rust的优势我的体会如下:

* Error Handling机制好太多,用Result封装函数运行结果灵活性大大提高,代码也大大简洁

* 函数式编程支持较好,有Lambda这种东西,使得它写起来甚至有Ruby的感觉

* 效率高,没有了GC和Runtime,速度是没得说的

* 支持范型

* 有宏和编译器插件这些黑客技,语言扩展性较好

* 社区活跃度更高,更强调社区的作用,有[RFC](GitHub - rust-lang/rfcs: RFCs for changes to Rust)。[中文社区](Rust China)也有了

Rust的劣势是:

* 语言特性复杂,对新手就不会那么友好

* 稳定性不够,语言的进化较激进

* 第三方库的成熟度还落后于Go,商业化的应用也还不够

1.根据Rust的特点和定位适用于对控制性比较强,对性能很敏感的领域,比如底层软件(OS/driver),基础系统软件(Compiler/VM/DB等),性能要求比较高的应用软件(浏览器/图形图像处理/游戏/高性能服务器软件等,或者可能包括近来很火的ML应用方向)。2.底层软件(比如OS/driver)部分是和C应用领域有很大重合度的,在这个领域我认为对C冲击不大。在这里C已经足够好了,而且这些领域技术性很高,但业务逻辑其实并不算太复杂,Rust的优势作用有限。而且Rust相比于C语言,带来了一定的“黑盒”和这些领域一些不需要的语言复杂特性。C作为“可移植的汇编”恰到好处的非常适合这个领域,其他语言基本无法构成挑战。3.前面1中提到的领域除了底层软件(OS/driver之类)剩下的领域,C++目前最具有优势。在这些领域C++相对于C提供了高级特性方便开发,相对于JVM系的性能更高内存更少。(虽然这些领域有些知名软件是C和JVM系的,比如postgresql/redis/nginx/Hadoop/spark等,但在这些领域目前只有C++一个是全能型)我认为rust的主要战场就在这里,需要对决的对手就是C++。C++既有的力量(系统/代码/人员/习惯)太强大了,在这些领域完全打败C++是非常困难的。而且C++也在不断发展,近年来发展的步伐也快了起来,C++11/14/17等等。但C++的历史包袱是很重的,越发展其实复杂性也在不断提高,何况有些问题(像安全/异常/复杂继承等等)是基因里的,通过增加feature打补丁是弥补不了的。Rust最容易吸引的人群可能是C++程序员:因为,一方面解决了不少C++的痛点,另一方面Rust的很多特性其实有点复杂也有点门槛的。这些特性背后的动因有C++背景的程序员是非常容易理解,也是不少C++程序员梦寐以求的。相对而言,其他语言背景出身的程序员,对Rust的共鸣性远远没有C++程序员强烈。猜测Rust会:a.蚕食掉一定的C++份额。一些可能本会选择C++开发的新项目,可能会选择Rust。b.蚕食掉一定的Java份额。有些项目选择JVM系是由于C++开发太复杂,同时该项目对性能又有一定的要求。那么Rust出现以后也会蚕食掉一定的此类项目。c.蚕食掉一定的golang份额。不满意gc(即使1.5改善了,gc的先天问题是无法彻底解决的),不满意泛型,不满意性能的一部分项目。不过也要依赖于Rust未来并发的解决方案是否足够理想了。1.0这种是没戏的。d.移动端Rust从自己实力上说是够的。不过这个真的要看出品移动端设备的“爹”的意思了。Rust自身有一些优势非常明显,在这些领域是很有竞争力的。Rust社区一定要重视IDE开发环境,花费精力出eclipse/intellji/vs的高质量的IDE插件,对于推广和流行大有帮助。只要Rust社区不要犯D语言曾经反复折腾的毛病,能像golang社区那样基础做的不错并且工程质量优秀,那么未来Rust出几个杀手级的应用,前途还是很可期的。