2. 瞄准的是取代C/C++
http://www.rust-lang.org/
3.特点
1) 无GC的内存安全
而是在编译时通过RAII(Resource Acquisition Is Initialization)实现资源自动释放,这样不但能提供内存安全,还提供数据和资源安全。这样能降低开发者手工管理内存的必要,能够自动确保清理工作总是在运行,甚至当任务出现崩溃时。动态语言如Python和Ruby也提供类似能力,但是没有Rust这样强大。
2) 无data-race的并发
Rust能够确保在并发编程中的数据安全,某个时间点同时只能有多个读操作或一个写操作被允许访问共享数据。
3) Generics和Trait统一了compile-time和run-time polymorphism,编译时多态叫trait,运行时多态叫trait object,省去了不少程序语义方面的复杂性。
4) 提供代数数据类型,除了tuple struct类型以外,Rust还提供enum和模式匹配,这些都是高级类型系统才拥有的功能如今出现在系统级的编程语言中。
5) 基于继承的组合,Rust能基于继承实现组合,Trait是Rust泛型中重要角色。
6) 灵活的enum系统,以及衍生的错误处理机制。Rust没有exception,错误是通过enum返回的。
7) 灵活的module系统。
module系统以及pub和use关键字让你灵活的控制所有的访问许可关系。
8) 强大的管理系统Cargo和中心化的库管理crates.io。
Cargo的依赖管理遵循最新的Semantic Versioning。只需要适当选择库的依赖版本,一个cargo update会自动完成所有版本匹配和下载加载。
9) 语言自带的简单测试系统,rustdoc的自动文档生成
10) 杀手级的特性:Ownership和Lifetime
Rust首页宣称的"prevents nearly all segfaults, and guarantees thread safety"
4. Rust vs. C++
开发效率
足够多的语言特性保证开发效率,比C++吸收了更多的现代优秀语言特性。
可维护性
与C++一致的Zero cost abstraction
稳定性
现代语言的类型系统,杀手级的ownership和lifetime
性能
无GC实时控制,接近底层没有overhead。在达到同样安全性的情况下,Rust不会比C++慢。
C++ 高性能的静态强类型多范式语言
兼容性,有历史包袱,
新feature引入复杂性(C++11/14/17),何况有些问题(像安全/异常/复杂继承等等)是基因里的,通过增加feature打补丁是弥补不了的
5. 与动态语言或脚本语言比较,动态语言适合快速原型或立即完成实现的任务,而Rust适合大型团队,需要很长的产品周期,长期不断进行维护重构的项目。
动态语言让你起步很快,代价会在后期偿还,而Rust编译器一开始就强迫你正确细节地做事,时间长了效率会不断提高。
6. 适用领域
Rust的特点和定位适用于对控制性比较强,对性能很敏感的领域,比如底层软件(OS/driver),基础系统软件(Compiler/VM/DB等),性能要求比较高的应用软件(浏览器/图形图像处理/游戏/高性能服务器软件等, 或者可能包括近来很火的ML应用方向)。
底层软件(比如OS/driver)部分是和C 应用领域有很大重合度的,在这个领域对C冲击不大。
原因:在这里C已经足够好了,而且这些领域技术性很高,但业务逻辑其实并不算太复杂,Rust的优势作用有限。而且 Rust相比于C语言,带来了一定的“黑盒” 和 这些领域一些不需要的语言复杂特性。 C 作为“可移植的汇编” 恰到好处的非常适合这个领域,其他语言基本无法构成挑战。
7. 不足
原生库缺乏,很多都是binding
需要对于Rust编译器有足够清楚的了解,当遇到灰色情况它会拒绝编译,直至你搞清楚它,这对于代码质量是一个好事,但是于讲究开发效率的项目来说就有点苛刻了。
学习曲线,门槛高,Rust并不是你能在几周内捡起学习马上就精通的那种语言
生态系统还需要推广
评论